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/

posted @ 2016-03-04 16:56  _freedom_yl  阅读(396)  评论(0编辑  收藏  举报