Javascript toFixed功能

Sus*_*jee 13 javascript tofixed

预期结果:

(1.175).toFixed(2) = 1.18 and
(5.175).toFixed(2) = 5.18
Run Code Online (Sandbox Code Playgroud)

但在JS中显示:

(1.175).toFixed(2) = 1.18 but 
*(5.175).toFixed(2) = 5.17*
Run Code Online (Sandbox Code Playgroud)

如何纠正这个问题?

Den*_*ret 11

这不是一个错误.这与事实数字不是以十进制存储而是存储在IEEE754中有关(因此5.175并未精确存储).

如果你想在特定的方向(向上)进行舍入并且你一直有这个精度的数字,你可以使用这个技巧:

(5.175 + 0.00001).toFixed(2)
Run Code Online (Sandbox Code Playgroud)


Kip*_*pie 6

您可以尝试使用round而不是toFixed.

Math.round(5.175*100)/100

如果你愿意,你甚至可以尝试将它放在一些原型方法中.

创建了一个在Number上实现简单原型的jsBin.

Number.prototype.toFixed = function(decimals) {
 return Math.round(this * Math.pow(10, decimals)) / (Math.pow(10, decimals)); 
};
Run Code Online (Sandbox Code Playgroud)