由于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
以这种方式纠正浮动数学问题是否可以?
答案 0 :(得分:1)
你应该在乘以后进行舍入:
var d = (Math.round(1000*a)-Math.round(1000*b))/1000;
只是乘法可能无法解决问题。分配
时var a = 16924.83;
它可能在内部将其表示为16924.8300001
,因此当您乘以1000
时,您会获得16924830.001
。你需要四舍五入才能摆脱这一部分。