本文仅是最初的探索性文章,并不是好的解决办法,好的解决办法请参见: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。
所以说上述方法还是有一定受限,具体怎么用,各位慢慢研究,我是被整疯了。
相关阅读