Math.trunc()
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статический метод Math.trunc() возвращает целую часть числа, отбрасывая все дробные разряды.
Попробовать
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
Синтаксис
Math.trunc(x)
Параметры
-
x - Число.
Возвращаемое значение
Целая часть x.
Описание
Работа Math.trunc() более прямолинейна, чем работа трех других методов Math: Math.floor(), Math.ceil() и Math.round(); он отсекает (отрезает) точку и цифры справа от нее, независимо от того, является ли аргумент положительным или отрицательным числом.
Поскольку trunc() является статическим методом Math, вы всегда используете его как Math.trunc(), а не как метод объекта Math, который вы создали (Math не является конструктором).
Примеры
Использование 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
Использование побитовых "холостых" операций для отсечения чисел
Предупреждение: Это не является полифилом для Math.trunc() из-за не пренебрежимо малых граничных случаев.
Побитовые операции преобразуют свои операнды в 32-битные целые числа, чем исторически пользовались для отсечения чисел с плавающей запятой. Распространенные методы включают:
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
Имейте в виду, что это, по сути, toInt32, что не то же самое, что Math.trunc. Когда значение не удовлетворяет -231 - 1 < value < 231 (-2147483649 < value < 2147483648), преобразование приведет к переполнению.
const a = ~~2147483648; // -2147483648 const b = ~~-2147483649; // 2147483647 const c = ~~4294967296; // 0
Используйте ~~ в качестве замены для Math.trunc() только тогда, когда вы уверены, что диапазон входных данных находится в пределах диапазона 32-битных целых чисел.
Спецификации
| Спецификация |
|---|
| Спецификация языка ECMAScript® 2027 # sec-math.trunc |
Совместимость с браузерами
| Десктоп | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
trunc |
38 |
12 |
25 |
25 |
8 |
38 |
25 |
25 |
8 |
3.0 |
38 |
8 |
1.0.0 |
1.0 |
0.12.0 |
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc