toFixed 解决 JavaScript 浮点数运算不精确的问题

作者:vkvi 来源:ITPOW(原创) 日期:2014-10-13

本文仅是最初的探索性文章,并不是好的解决办法,好的解决办法请参见:JavaScript 如何解决 toFixed 不精确、round 不支持小数的四舍五入问题?

JavaScript 的浮点数让人伤透了脑筋。

结果不是 1.91,而是 1.9100000000000001。

在固定小数位数的情况下,可用 toFixed 来解决,比如金额保留后 4 位,就可用:

先多取一位,再取 4 位,这样来解决。

为什么要多取一位呢?主要是怕这种情况:结果应是 0.12345,取 4 位就是 0.1235,可现在结果不精确,是 0.1234499999999999,如果直接取 4 位了断,就成了 0.1234,故先多取一位。

但遇到特殊情况也有问题,比如结果是:3.444446,这是个精确的运算结果,若要根据前面的方式,先取 5 位,就是 3.44445,再取 4 位就成了 3.4445,而正确的应该是 3.4444。

所以说上述方法还是有一定受限,具体怎么用,各位慢慢研究,我是被整疯了。

相关阅读

相关文章