javascript小数乘法精确率问题

来源:互联网 发布:连云港网络 编辑:程序博客网 时间:2024/05/01 13:41

做前端页面开发的经常会遇到数值的乘法计算,带小数位计算会出现值溢出的问题,如:

100

JS里做小数的乘法运算时会出现浮点错误,具体可以测试一下: <script>alert(11*22.9)</script>

结果是251.89999999999998 而不是251.9 这个问题想必有很多人为之头痛。那么如何解决呢?

网上那些经常转载来,转载去的解决方式,其实都存在弊端,先看看网上那种弊端的解决方式吧。

1、<script>alert(11*(22.9*10)/10);</script> 解决问题的大概思路就是,先把因数放大为整数,最后再除以相应的倍数,这样就能得到正确的结果了。 

其实这种方式不完全正确,虽说可以解决一部分小数的乘法问题,但是还是有特例的,比如按照这种解决思路的话,小数点后面有几位小数必须扩大10的多少次方倍,如果这个值是个动态的,岂不是显得很繁琐。

下面给出万能解决方式。 

<script>    alert(parseFloat(10000.005*10000).toFixed(2));

    //结果是10000005.00

</script> 

此处借助toFixed()方法来四舍五入保留小数位。

只要乘数足够大,皆能解决!

0 0