toFixed失灵
 发布于 7 年前  作者 jowang2016  4324 次预览  最后一次回复是 7 年前  来自 问答 

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

7 回复
jowang2016

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

myy

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

linkenliu

就不能先乘再toFixed?

robberfree

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

blackmatch

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

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

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

enmoon

0.1 + 0.2 !== 0.3

linxiaoziruo

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