Math.trunc(x) (ES6) loại bỏ phần thập phân, chỉ giữ phần nguyên — không làm tròn, không quan tâm dấu âm/dương.
So sánh với Math.floor/ceil/round
| x | Math.trunc | Math.floor | Math.ceil | Math.round |
|---|---|---|---|---|
| 1.4 | 1 | 1 | 2 | 1 |
| 1.6 | 1 | 1 | 2 | 2 |
| -1.4 | -1 | -2 | -1 | -1 |
| -1.6 | -1 | -2 | -1 | -2 |
| 0.49 | 0 | 0 | 1 | 0 |
| -0.49 | 0 | -1 | 0 | 0 |
Ví dụ
<script>
document.write(Math.trunc(1.414) + '<br>'); // 1
document.write(Math.trunc(0.49) + '<br>'); // 0
document.write(Math.trunc(8.9) + '<br>'); // 8
document.write(Math.trunc(-1.414) + '<br>'); // -1
document.write(Math.trunc(-0.49) + '<br>'); // 0
document.write(Math.trunc(-8.9) + '<br>'); // -8
// Cũng chấp nhận string số
document.write(Math.trunc('123.456') + '<br>'); // 123
</script>
Polyfill (ES5)
if (!Math.trunc) {
Math.trunc = function(x) {
return x < 0 ? Math.ceil(x) : Math.floor(x);
};
}
// Hoặc bitwise (chỉ 32-bit signed int):
function trunc32(x) { return x | 0; } // Nhanh nhưng giới hạn ±2^31-1
Lưu ý
- Trả về
NaNnếu input không chuyển thành số được. - Không thay đổi đối số gốc.
- Dùng cho: loại bỏ decimal part khi tính index, pixel, pagination.
Cách khác cắt phần thập phân
// Bitwise OR (fast, 32-bit only)
~~3.14; // 3
3.14 | 0; // 3
-3.14 | 0; // -3
// parseInt (string based, chậm hơn)
parseInt(3.14); // 3 — nhưng parseInt('-3.14') = -3, parseInt('3.9') = 3