Java及JS中double类型的数据加减乘除运算时精度错误(如:148163.1 - 82692.09 会= 5471.010000000009)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tanzongbiao/article/details/89547645

Java

double a = 11540.0;

double b = 0.35;

double result = a * b;

BigDecimal a1 = new BigDecimal(Double.toString(a));

BigDecimal b1 = new BigDecimal(Double.toString(b));

BigDecimal result1 = a1.multiply(b1);

System.out.println("控制台输出:" + a + " * " + b + " = " + result);

System.out.println("控制台输出2:" + a1 + " * " + b1 + " = " + result1);

System.out.println("计算器正确是:" 4039);

控制台输出:11540.0 * 0.35 = 4038.9999999999995
控制台输出2:11540.0 * 0.35 = 4039.000
计算器正确是:4039

 

JS

//js中double类型的数据加减的时候出错(如:148163.1 - 82692.09 会= 5471.010000000009)
    var sumMoneyNew = sumMoneyGlobal - (distributionCostsGlobal - distributionCosts);
    sumMoneyNew = sumMoneyNew.toFixed(2);

 

解决办法:

js中有

Math.round(x)方法,返回数字最接近的整数,四舍五入取整数,即舍去小数部分

Number.toFixed()方法,能保留小数点后面的指定位数

 

原因:

https://www.cnblogs.com/yanweidie/p/3561065.html

展开阅读全文

没有更多推荐了,返回首页