JavaScript:在.5个案例中向下舍入

Joh*_*age 6 javascript decimal rounding

我处于JavaScript函数生成数字的情况,例如2.5.我希望将这五点数字向下舍入到2,而不是结果Math.round,在这种情况下总是向上舍入(忽略甚至奇怪的规则),产生2.有没有更优雅的方法这样做比从减去0.01四舍五入前的数字?谢谢.

Mar*_*son 14

只是否定输入和输出Math.round:

var result = -Math.round(-num);
Run Code Online (Sandbox Code Playgroud)

更详细地说: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>");
Run Code Online (Sandbox Code Playgroud)