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