toFixed失灵
在小程序中 接口返回的值是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。