JavaScript 舍入在 77.475 和 67.475 上失败

标签 javascript math rounding rounding-error

使用此代码(https://jsfiddle.net/d5pjr60g/):

var num = 67.475;
var round = (Math.round( num * 100 ) / 100).toFixed(2);
alert(round);

数字 67.475 和 77.475 分别返回 67.47 和 77.47。但是,如果您更改任何其他数字,它会“正确”舍入。 57.475 或 67.375 将分别返回 57.48 和 67.38。

如果使用基本的 var round = num.toFixed(2); 会得到相同的结果

每个浏览器都会发生这种情况。如何将 77.475 舍入到 77.48?

最佳答案

也许是舍入方案的问题,它可能使用 banker's rounding 。这个解决方案可以处理它。 Gaussian/banker's rounding in JavaScript

关于JavaScript 舍入在 77.475 和 67.475 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41619522/

相关文章:

javascript - 如果背景颜色优于 x 则改变颜色?

algorithm - 将小数转换为负十进制的算法?

sql-server - SQL Server 数字舍入问题

Java 四舍五入小数 - 特定情况第二个小数零

javascript - 用户界面自动化: Access UIViews inside UIScrollView

javascript - 在 angularjs 外部访问 $state

Javascript 显示非常大的数字而不是显示 xe+n

java - 在 Java 中循环并获取总和,而不使用任何内置函数

javascript - 在javascript中对数字进行四舍五入

javascript - ES6 箭头/函数等效