如何在JavaScript中四舍五入一个数字?
Math.round()不起作用,因为它舍入到最接近的小数。
我不确定是否有更好的方法,而不是在小数点处分开,保留第一位。一定有……
如何在JavaScript中四舍五入一个数字?
Math.round()不起作用,因为它舍入到最接近的小数。
我不确定是否有更好的方法,而不是在小数点处分开,保留第一位。一定有……
当前回答
Math.floor(1+7/8)
其他回答
Math.round(3.14159 * 100) / 100 // 3.14
3.14159.toFixed(2); // 3.14 returns a string
parseFloat(3.14159.toFixed(2)); // 3.14 returns a number
Math.round(3.14159) // 3
Math.round(3.5) // 4
Math.floor(3.8) // 3
Math.ceil(3.2) // 4
朝向负无穷- Math.floor()
+3.5 => +3.0
-3.5 => -4.0
可以使用Math.trunc()向零舍入。旧的浏览器不支持此功能。如果需要支持这些,可以使用Math.ceil()表示负数,使用Math.floor()表示正数。
+3.5 => +3.0 using Math.floor()
-3.5 => -3.0 using Math.ceil()
Math.floor()可以工作,但与使用按位或操作相比,它非常慢:
var rounded = 34.923 | 0;
alert( rounded );
//alerts "34"
EDIT Math.floor()并不比使用|操作符慢。感谢Jason S检查我的工作。
下面是我用来测试的代码:
var a = [];
var time = new Date().getTime();
for( i = 0; i < 100000; i++ ) {
//a.push( Math.random() * 100000 | 0 );
a.push( Math.floor( Math.random() * 100000 ) );
}
var elapsed = new Date().getTime() - time;
alert( "elapsed time: " + elapsed );
今天摆弄别人的代码,发现下面的似乎也round down:
var dec = 12.3453465,
int = dec >> 0; // returns 12
有关符号传播右移(>>)的更多信息,请参阅MDN位操作符
我花了一段时间才弄清楚这是在做什么:D
但正如上面强调的那样,Math.floor()在我看来更易于阅读。
Math.floor(1+7/8)