时间:2021-05-19
看下面的一段代码的运行结果:
public class TestDouble { public static void main(String[] args) { double d =538.8; System.out.println(d*100); }输出结果很意外的不是 53880 而是53879.99999999999
解决方法一:
538.8*100 用*10*10 替换,才能得到我们想要的结果
538.8*10000 用 100*100替换。
解决方法二:
public class TestDouble { public static void main(String[] args) { double d =538.8; BigDecimal a1 = new BigDecimal(Double.toString(d)); BigDecimal b1 = new BigDecimal(Double.toString(100)); BigDecimal result = a1.multiply(b1);// 相乘结果 System.out.println(result); BigDecimal one = new BigDecimal("1"); double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位数 System.out.println(a); } }以上这篇浅谈Java double 相乘的结果偏差小问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在编写代码做测试时发现两个大数相乘结果不正确的问题,测试代码如下:#include"stdafx.h"#include#includeint_tmain(int
浅谈java内存模型不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安
问题现象今天使用mybatis遇到个很奇怪的问题,我使用一个参数@param("threshold"),类型是java的double,但是很奇怪,一直告诉我参数
Java中存在着两种Random函数:一、java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,
概述java.util.Random可以产生int、long、float、double以及Goussian等类型的随机数。这也是它与java.lang.Math