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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
trunc
|
Chrome Full support 38 | Edge Full support 12 | Firefox Full support 25 | Internet Explorer No support Ні | 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 |