toFixed失灵
发布于 9 天前 作者 jowang2016 479 次浏览 来自 问答

在小程序中 接口返回的值是0.331325 使用toFixed(4)再乘100 以便百分比展示 结果得到了33.1299999999995% 和小程序环境有关系吗?还是toFixed(4) 本身有坑呢?怎么解决这个bug呢?

7 回复

刚才调试了一下 不是tofixed问题 问题在于乘100之后 原来的数字精度就消失了 成了一长串数字

如果你不最后乘100,那么 toFixed() 就没问题。所以根本就不是 toFixed() 的问题。

就不能先乘再toFixed?

这和期望0.1+0.2===0.3是一样的问题。不是toFixed的问题,而是计算过程中精度丢失了。toFixed放在最后一步吧。

toFixed返回的是字符串的值。我一般这样玩:

Math.round(分子/分母 * 10000) / 100.00

四舍五入保留2位小数百分率。

0.1 + 0.2 !== 0.3

这是计算机二进制存储的硬伤,不是JS的独有问题。解决办法还是楼上的先保留精度计算完再toFixed。

回到顶部