javascript trunc()函数

时间:2010-01-24 02:49:00

标签: javascript bit-manipulation bitwise-operators

我想在javascript中截断一个数字,这意味着要删除小数部分:

trunc(2.6)== 2

trunc(-2.6)== -2


经过大量的基准测试后,我的回答是:

 function trunc (n) {
    return ~~n;
 }

 // or  

 function trunc1 (n) {
    return n | 0;
 }

5 个答案:

答案 0 :(得分:34)

作为@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;

答案 1 :(得分:13)

对于正数:

Math.floor(2.6) == 2;

对于负数:

Math.ceil(-2.6) == -2;

答案 2 :(得分:10)

您可以使用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

答案 3 :(得分:4)

我用

function trunc(n){
   return n - n % 1;
}

因为它适用于整个浮动范围,应该(未测量)比

更快
function trunc(n) {
  return Math[n > 0 ? "floor" : "ceil"](n);
}

答案 4 :(得分:0)

如果以前或偶然发现此线程的其他人无法使用它,则现在可以简单地使用Math库中的trunc()函数,如下所示:

let x = -201;
x /= 10;
console.log(x);
console.log(Math.trunc(x));

>>> -20.1
>>> -20