Spec-Zone.ru › JavaScript

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

Смотрите также

  • Полифил Math.trunc в core-js
  • Math.abs()
  • Math.ceil()
  • Math.floor()
  • Math.round()
  • Math.sign()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API