JavaScript:四舍五入 0.5 个案例

标签 javascript decimal rounding

我遇到的情况是 JavaScript 函数生成数字,例如 2.5。我希望将这些五点数向下舍入为 2,而不是 Math.round 的结果,在这种情况下它总是会四舍五入(忽略奇偶规则), 产生 2。有没有比四舍五入前从数字中减去 0.01 更优雅的方法呢?谢谢。

最佳答案

只需取反 Math.round 的输入和输出:

var result = -Math.round(-num);

更详细地说:JavaScript 的 Math.round 有一个不寻常的属性,它会将中途情况四舍五入到正无穷大,无论它们是正数还是负数。例如,2.5 将四舍五入为 3.0,而 -2.5 将四舍五入为 -2.0。这是一种不常见的舍入模式:更常见的是将中途情况从零舍入(因此 -2.5 将舍入为 -3.0),或最接近的偶数.

但是,它确实有一个很好的特性,那就是将它调整为将中途情况舍入到负无穷大是微不足道的:如果这是你想要的,那么你所要做的就是对输入和输出都取反:

例子:

function RoundHalfDown(num) {
  return -Math.round(-num);
}

document.write("1.5 rounds to ", RoundHalfDown(1.5), "<br>");
document.write("2.5 rounds to ", RoundHalfDown(2.5), "<br>");
document.write("2.4 rounds to ", RoundHalfDown(2.4), "<br>");
document.write("2.6 rounds to ", RoundHalfDown(2.6), "<br>");
document.write("-2.5 rounds to ", RoundHalfDown(-2.5), "<br>");

关于JavaScript:四舍五入 0.5 个案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35821815/

相关文章:

c# - 转换为小数点后两位

javascript - 在 jQuery 中更改克隆子项的 ID

带有小数/ float 比较的 sqlite 选择查询不起作用

java整数舍入(除法相关)

delphi - Delphi/Borland Pascal STR 程序如何循环

python 小数给出错误的答案

javascript - 从 JSON $ajax 下载数据

javascript - 将鼠标悬停在父列表项上时更改链接颜色时的奇怪行为

javascript - 如何在 reactJS 的 .map() 中使用 setTimeout

python 小数奇怪的句柄以及如何获得最接近的一位小数 float ?