在 JavaScript 中,有多种方式可以用来取整数。以下是一些常见的方法:
-
Math.round()
Math.round() 函数可以对一个数进行四舍五入。
jsCopy code
Math.round(3.6); // 结果为 4Math.round(3.3); // 结果为 3
-
Math.floor()
Math.floor() 函数会向下取整,也就是返回小于或等于一个给定数的最大整数。
jsCopy code
Math.floor(3.6); // 结果为 3Math.floor(3.3); // 结果为 3
-
Math.ceil()
Math.ceil() 函数会向上取整,也就是返回大于或等于一个给定数的最小整数。
jsCopy code
Math.ceil(3.6); // 结果为 4Math.ceil(3.3); // 结果为 4
-
parseInt()
parseInt() 函数会将一个字符串参数解析成为一个指定基数的整数 (数学系统的基础)。在没有提供基数的情况下,JavaScript 将根据特定条件将字符串转换为整数。它会丢弃小数部分。
jsCopy code
parseInt("3.6"); // 结果为 3parseInt("3.3"); // 结果为 3
-
按位或运算符
在 JavaScript 中,按位或运算符 | 可以用来进行取整操作。其实,对任何数字进行 | 0 操作,效果和 Math.floor() 函数类似,只是当数值为负数时,两者的结果会有所不同。
jsCopy code
3.6 | 0; // 结果为 33.3 | 0; // 结果为 3
-3.3 | 0; // 结果为 -3
对于负数,Math.floor() 和按位或运算符 | 的行为是不同的。
在 JavaScript 中,Math.floor() 函数会向下取整,也就是返回小于或等于一个给定数的最大整数。而按位或运算符 | 对于负数则会进行向零取整。
让我们来看一下它们的区别:
jsCopy code
Math.floor(-3.3); // 结果为 -4,因为 -4 是小于 -3.3 的最大整数
-3.3 | 0; // 结果为 -3,因为 -3 是大于 -3.3 的最小整数(即向零取整)
Math.floor() 在对负数取整时会更趋向于负无穷,而按位或运算符则会趋向于零。所以在使用这两种方法时,需要注意你的需求和这两者的差异。
-
toFixed(n)
toFixed() 方法会把 Number 四舍五入为指定的小数位数的数字字符串。例如:
jsCopy code
let num = 100.456001;
console.log(num.toFixed(2)); // 输出 "100.46"
在上述例子中,toFixed(2) 将数字 num 四舍五入到小数点后两位。请注意 toFixed() 方法返回的是一个字符串,而不是一个数字。
-
toPrecision(n)
toPrecision() 方法会把 Number 格式化为指定的长度的数字字符串。例如:
jsCopy code
let num = 99.456001;
console.log(num.toPrecision(5)); // 输出 "99.456"
在上述例子中,toPrecision(5) 将数字 num 格式化为长度为 5 的字符串。这里的长度包括了小数点前的数字、小数点以及小数点后的数字。
同样的,toPrecision() 方法返回的也是一个字符串,而不是一个数字。
具体使用哪一种取决于你的需求,如果你需要控制小数点后的位数,那么 toFixed() 会更适用。如果你需要控制数字的总长度,那么 toPrecision() 更为合适。