为什么固定()舍入是如此奇怪

时间:2013-08-22 08:09:50

标签: javascript

Chrome 29.0.1547.57:

0.0095 .toFixed(3) // "0.009"
0.1095 .toFixed(3) // "0.110"
1.1095 .toFixed(3) // "1.109"

此功能有什么问题?
我知道我可以编写自己的函数,这里的问题是为什么库存函数如此错误? 根据MDN,它在JS 1.5中实现,因此它并不新鲜。或者我可能不理解这个功能吧?

1 个答案:

答案 0 :(得分:3)

问题是大多数小数部分的二进制浮点表示不准确。 0.0095的内部表示可能实际上类似于0.00949999,因此toFixed向下舍入,而0.1095可能是0.109500001,向上舍入。

请参阅Javascript toFixed Not Rounding