我想在javascript中截断一个数字,这意味着去掉小数部分:
截断 ( 2.6 ) == 2
截断 (-2.6 ) == -2
经过大量基准测试后,我的答案是:
function trunc (n) {
return ~~n;
}
// or
function trunc1 (n) {
return n | 0;
}
我想在javascript中截断一个数字,这意味着去掉小数部分:
截断 ( 2.6 ) == 2
截断 (-2.6 ) == -2
经过大量基准测试后,我的答案是:
function trunc (n) {
return ~~n;
}
// or
function trunc1 (n) {
return n | 0;
}
作为@Daniel答案的补充,如果您想始终截断为零,您可以:
function truncate(n) {
return n | 0; // bitwise operators convert operands to 32-bit integers
}
或者:
function truncate(n) {
return Math[n > 0 ? "floor" : "ceil"](n);
}
两者都将为您提供正数和负数的正确结果:
truncate(-3.25) == -3;
truncate(3.25) == 3;
对于正数:
Math.floor(2.6) == 2;
对于负数:
Math.ceil(-2.6) == -2;
您可以使用toFixed方法,该方法还允许指定要显示的十进制数:
var num1 = new Number(3.141592);
var num2 = num1.toFixed(); // 3
var num3 = num1.toFixed(2); // 3.14
var num4 = num1.toFixed(10); // 3.1415920000
请注意toFixed将数字四舍五入:
var num1 = new Number(3.641592);
var num2 = num1.toFixed(); // 4
我用
function trunc(n){
return n - n % 1;
}
因为它可以在整个浮动范围内工作并且应该(未测量)比
function trunc(n) {
return Math[n > 0 ? "floor" : "ceil"](n);
}
万一之前和其他偶然发现此线程的人不可用,您现在可以简单地使用数学库中的 trunc() 函数,如下所示:
let x = -201;
x /= 10;
console.log(x);
console.log(Math.trunc(x));
>>> -20.1
>>> -20