Javascript 77.475 和 67.475 舍入失败
Javascript rounding fails on 77.475 and 67.475
使用此代码 (https://jsfiddle.net/d5pjr60g/):
var num = 67.475;
var round = (Math.round( num * 100 ) / 100).toFixed(2);
alert(round);
数字 67.475 和 77.475 return 分别为 67.47 和 77.47。但是,如果您更改任何其他数字,它会四舍五入 "correctly"。 57.475 或 67.375 将分别 return 57.48 和 67.38。
如果我使用基本的 var round = num.toFixed(2);
,我会得到相同的结果
每个浏览器都会出现这种情况。我怎样才能将它调整到 77.475 到 77.48?
可能是舍入方案的问题,它可能使用 banker's rounding。这个解决方案处理它。
Gaussian/banker's rounding in JavaScript
使用此代码 (https://jsfiddle.net/d5pjr60g/):
var num = 67.475;
var round = (Math.round( num * 100 ) / 100).toFixed(2);
alert(round);
数字 67.475 和 77.475 return 分别为 67.47 和 77.47。但是,如果您更改任何其他数字,它会四舍五入 "correctly"。 57.475 或 67.375 将分别 return 57.48 和 67.38。
如果我使用基本的 var round = num.toFixed(2);
每个浏览器都会出现这种情况。我怎样才能将它调整到 77.475 到 77.48?
可能是舍入方案的问题,它可能使用 banker's rounding。这个解决方案处理它。 Gaussian/banker's rounding in JavaScript