20

JavaScript で数値を切り捨てたい、つまり小数部分を切り捨てたい:

切り捨て ( 2.6 ) == 2

切り捨て (-2.6) == -2


重いベンチマークの後、私の答えは次のとおりです。

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

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

5 に答える 5

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;
于 2010-01-24T04:41:58.220 に答える
13

正の数の場合:

Math.floor(2.6) == 2;

負の数の場合:

Math.ceil(-2.6) == -2;
于 2010-01-24T02:52:18.817 に答える
10

表示する 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
于 2011-10-10T19:35:46.570 に答える
4

私が使う

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

フロート範囲全体で機能し、(測定されていない)より高速である必要があるためです。

function trunc(n) {
  return Math[n > 0 ? "floor" : "ceil"](n);
}
于 2012-07-02T09:24:40.167 に答える
0

以前に利用できなかった場合や、このスレッドに出くわした他の人が利用できなかった場合は、Math ライブラリの trunc() 関数を次のように簡単に使用できるようになりました。

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

>>> -20.1
>>> -20
于 2020-02-22T06:50:07.420 に答える