【发布时间】:2019-09-06 16:16:05
【问题描述】:
我对@987654322@ 函数有疑问。我有一些浮点数,例如160.325 和 5.325。 toFixed() 函数的返回值应该分别为 160.33 和 5.33,但它为 160.325 和 5.33 分别返回 160.32 和 5.325。
我尝试过不同的方式,
Number(160.325).toFixed(2)
"160.32"
Number(160.326).toFixed(2)
"160.33"
Number(5.325).toFixed(2)
"5.33"
Number(160.425).toFixed(2)
"160.43"
我希望输出为 160.33 和 5.33。
【问题讨论】:
-
你在寻找什么逻辑?你希望它总是四舍五入吗?
-
这在MDN documentation中有解释
-
(160.325).toFixed(20)给出 160.32499999999998863132。此处应归咎于浮点数学。 -
一个快速的解决方法是将它们四舍五入为更大的数字,并避免玩弄浮点数:
rounded = (Math.round(x * 100) / 100).toFixed(2); -
toFixed() 在这里可以正常工作,如有必要,它会四舍五入。根据你的例子 160.325 最后一个小数点是 5 并且在数学上不需要四舍五入因此函数不会四舍五入数字
标签: javascript decimal