四舍五入
四舍五入
Math.round()
将使用半舍入将值舍入为最接近的整数以断开关系。
var a = Math.round(2.3); // a is now 2
var b = Math.round(2.7); // b is now 3
var c = Math.round(2.5); // c is now 3
但
var c = Math.round(-2.7); // c is now -3
var c = Math.round(-2.5); // c is now -2
注意 -2.5
如何四舍五入到 -2
。这是因为中间值总是向上舍入,即它们被舍入到具有下一个更高值的整数。
围捕
Math.ceil()
将使值上升。
var a = Math.ceil(2.3); // a is now 3
var b = Math.ceil(2.7); // b is now 3
ceil
ing 负数将向零舍入
var c = Math.ceil(-1.1); // c is now 1
四舍五入
Math.floor()
会降低价值。
var a = Math.floor(2.3); // a is now 2
var b = Math.floor(2.7); // b is now 2
floor
负数将使它远离零。
var c = Math.floor(-1.1); // c is now -1
截断
警告 :使用按位运算符(>>>
除外)仅适用于 -2147483649
和 2147483648
之间的数字。
2.3 | 0; // 2 (floor)
-2.3 | 0; // -2 (ceil)
NaN | 0; // 0
Version >= 6
Math.trunc()
Math.trunc(2.3); // 2 (floor)
Math.trunc(-2.3); // -2 (ceil)
Math.trunc(2147483648.1); // 2147483648 (floor)
Math.trunc(-2147483649.1); // -2147483649 (ceil)
Math.trunc(NaN); // NaN
舍入到小数位
Math.floor
,Math.ceil()
和 Math.round()
可用于舍入到小数位数
要舍入到小数点后 2 位:
var myNum = 2/3; // 0.6666666666666666
var multiplier = 100;
var a = Math.round(myNum * multiplier) / multiplier; // 0.67
var b = Math.ceil (myNum * multiplier) / multiplier; // 0.67
var c = Math.floor(myNum * multiplier) / multiplier; // 0.66
你还可以舍入到多个数字:
var myNum = 10000/3; // 3333.3333333333335
var multiplier = 1/100;
var a = Math.round(myNum * multiplier) / multiplier; // 3300
var b = Math.ceil (myNum * multiplier) / multiplier; // 3400
var c = Math.floor(myNum * multiplier) / multiplier; // 3300
作为一个更实用的功能:
// value is the value to round
// places if positive the number of decimal places to round to
// places if negative the number of digits to round to
function roundTo(value, places){
var power = Math.pow(10, places);
return Math.round(value * power) / power;
}
var myNum = 10000/3; // 3333.3333333333335
roundTo(myNum, 2); // 3333.33
roundTo(myNum, 0); // 3333
roundTo(myNum, -2); // 3300
而 ceil
和 floor
的变种:
function ceilTo(value, places){
var power = Math.pow(10, places);
return Math.ceil(value * power) / power;
}
function floorTo(value, places){
var power = Math.pow(10, places);
return Math.floor(value * power) / power;
}