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)
您可以尝试使用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)
归档时间: |
|
查看次数: |
7163 次 |
最近记录: |