通过乘法修正浮动数学,是否可以?

时间:2014-05-07 16:16:43

标签: javascript math

由于js中的浮动数学问题,我有多个计算问题。 我试图通过将等式的所有部分乘以1000然后将结果除以1000来解决它。

var a = 16924.83,
    b = 16835.61;

var c = a-b; //outputs 89.22000000000116
var d = (1000*a-1000*b)/1000;  //outputs 89.22 and seems to be working correct

以这种方式纠正浮动数学问题是否可以?

我读过Is floating point math broken?

1 个答案:

答案 0 :(得分:1)

你应该在乘以后进行舍入:

var d = (Math.round(1000*a)-Math.round(1000*b))/1000;

只是乘法可能无法解决问题。分配

var a = 16924.83;

它可能在内部将其表示为16924.8300001,因此当您乘以1000时,您会获得16924830.001。你需要四舍五入才能摆脱这一部分。