为什么toFixed()取整如此奇怪

Why toFixed() rounding is so strange

本文关键字:toFixed 为什么      更新时间:2023-09-26

铬29.0.1547.57:

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

这个函数有什么问题
我知道我可以编写自己的函数,这里的问题是为什么stock函数如此bug?根据MDN的说法,它是在JS 1.5中实现的,所以它并不新鲜。或者我可能不理解这个函数,对吧?

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

请参阅Javascript to Fixed Not Rounding