Java及JS中double類型的數據加減乘除運算時精度錯誤(如:148163.1 - 82692.09 會= 5471.010000000009)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章