js浮点数运算需要注意的问题
最近在js运算浮点数时发现了一个问题。问题是这样的:js函数中处理两个浮点数的相加,为了防止出现0.1+0.2=0.30000000000000004的问题,两个数都先乘以10000后再相加,得到结果后再除以10000.代码逻辑大概如下:
1 var num1 = 95.40; 2 var num2 = 279.84; 3 var amtSum = 0*1; 4 5 amtSum = amtSum + num1 *10000; 6 amtSum = amtSum + num2 *10000; 7 var tmp = (amtSum /10000)//结果是375.23999999999995
在这里并没有得到想要的375.24.
经过一番搜索后,发现是在第6行相加的时候出现了舍入误差。处理方法虽然有一些,但是并不是很好,例如将计算结果toFixed(n),n为需要的精度。但是toFixed()返回的是字符串。
推荐还是找个专门的js库来处理这个问题。
http://mathjs.org/