Math.trunc()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức tĩnh Math.trunc() trả về phần nguyên của một số bằng cách loại bỏ các chữ số thập phân.
Try it
console.log(Math.trunc(13.37));
// Expected output: 13
console.log(Math.trunc(42.84));
// Expected output: 42
console.log(Math.trunc(0.123));
// Expected output: 0
console.log(Math.trunc(-0.123));
// Expected output: -0
Cú pháp
Math.trunc(x)
Tham số
x-
Một số.
Giá trị trả về
Phần nguyên của x.
Mô tả
Cách hoạt động của Math.trunc() đơn giản hơn so với ba phương thức Math khác: Math.floor(), Math.ceil() và Math.round(); nó cắt bỏ (loại bỏ) dấu thập phân và các chữ số bên phải nó, bất kể đối số là số dương hay âm.
Vì trunc() là một phương thức tĩnh của Math, bạn luôn sử dụng nó dưới dạng Math.trunc(), thay vì là phương thức của một đối tượng Math bạn tạo ra (Math không phải là constructor).
Ví dụ
>Sử dụng Math.trunc()
Math.trunc(-Infinity); // -Infinity
Math.trunc("-1.123"); // -1
Math.trunc(-0.123); // -0
Math.trunc(-0); // -0
Math.trunc(0); // 0
Math.trunc(0.123); // 0
Math.trunc(13.37); // 13
Math.trunc(42.84); // 42
Math.trunc(Infinity); // Infinity
Sử dụng toán tử bitwise để cắt bỏ phần thập phân
Warning:
Đây không phải polyfill cho Math.trunc() vì có các trường hợp biên không thể bỏ qua.
Các phép toán bitwise chuyển đổi toán hạng sang số nguyên 32-bit, điều mà lập trình viên đã lợi dụng để cắt bỏ phần thập phân của số thực. Các kỹ thuật phổ biến bao gồm:
const original = 3.14;
const truncated1 = ~~original; // Double negation
const truncated2 = original & -1; // Bitwise AND with -1
const truncated3 = original | 0; // Bitwise OR with 0
const truncated4 = original ^ 0; // Bitwise XOR with 0
const truncated5 = original >> 0; // Bitwise shifting by 0
Lưu ý rằng về bản chất đây là toInt32, không giống Math.trunc. Khi giá trị không thỏa -231 - 1 < value < 231 (-2147483649 < value < 2147483648), phép chuyển đổi sẽ tràn số.
const a = ~~2147483648; // -2147483648
const b = ~~-2147483649; // 2147483647
const c = ~~4294967296; // 0
Chỉ dùng ~~ thay cho Math.trunc() khi bạn chắc chắn phạm vi đầu vào nằm trong phạm vi số nguyên 32-bit.
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-math.trunc> |