Math.trunc()

Статичний метод Math.trunc() (урізати) повертає цілу частину числа шляхом відкидання усіх дробових цифр.

Спробуйте його в дії

Синтаксис

Math.trunc(x)

Параметри

x

Число.

Повернене значення

Ціла частина x.

Опис

На відміну від інших трьох подібних методів Math: Math.floor(), Math.ceil() та Math.round(), — Math.trunc() працює дуже просто. Вона відкидає (обрізає) крапку та всі цифри справа від неї, не зважаючи на те, чи аргумент є додатним числом, чи від'ємним.

Приклади

Застосування Math.trunc()

Math.trunc(13.37); // 13
Math.trunc(42.84); // 42
Math.trunc(0.123); // 0
Math.trunc(-0.123); // -0
Math.trunc("-1.123"); // -1
Math.trunc(NaN); // NaN
Math.trunc("foo"); // NaN
Math.trunc(); // NaN

Використання бітових фіктивів для урізання чисел

Застереження: Цей код не є поліфілом для Math.trunc() у зв'язку з крайніми випадками, котрі не можна ігнорувати. Бітові операції перетворюють свої операнди на 32-бітові цілі числа, котрі люди історично використовували для обрізання чисел з рухомою комою. Серед загальноприйнятих метод:

const original = 3.14;
const truncated1 = ~~original; // Подвійне заперечення
const truncated2 = original & -1; // Бітова кон'юнкція з -1
const truncated3 = original | 0; // Бітова диз'юнкція з 0
const truncated4 = original ^ 0; // Бітова виключна диз'юнкція з 0
const truncated5 = original >> 0; // Бітовий зсув на 0

Майте на увазі, що по суті це toInt32, що не те саме, що Math.trunc. Коли значення не задовольняє -231 - 1 < значення < 231 (-2147483649 < значення < 2147483648), то перетворення переповнюється.

const a = ~~2147483648; // -2147483648
const b = ~~-2147483649; // 2147483647
const c = ~~4294967296; // 0

Операцію ~~ можна використовувати як заміну для Math.trunc() лише тоді, коли є певність, що діапазон вихідних даних лежить в межах діапазону 32-бітових цілих чисел.

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
trunc
Chrome Full support 38
Edge Full support 12
Firefox Full support 25
Internet Explorer No support No
Opera Full support 25
Safari Full support 8
WebView Android Full support 38
Chrome Android Full support 38
Firefox for Android Full support 25
Opera Android Full support 25
Safari on iOS Full support 8
Samsung Internet Full support 3.0
Deno Full support 1.0
Node.js Full support 0.12.0

Дивіться також