The Math.trunc()
function returns the integer part of a number by removing any fractional digits.
The Math.trunc()
function returns the integer part of a number by removing any fractional digits.
Math.trunc(x)
x
A number.
The integer part of the given number.
Unlike the other three Math
methods: Math.floor()
, Math.ceil()
and Math.round()
, the way Math.trunc()
works is very simple. It truncates (cuts off) the dot and the digits to the right of it, no matter whether the argument is a positive or negative number.
The argument passed to this method will be converted to number type implicitly.
Because trunc()
is a static method of Math
, you always use it as Math.trunc()
, rather than as a method of a Math
object you created (Math
is not a constructor).
Warning: This is not a polyfill for Math.trunc()
because of non-negligible edge cases.
Bitwise operations convert their operands to 32-bit integers, which people have historically taken advantage of to truncate float-point numbers. Common techniques include:
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
Beware that this is essentially toInt32
, which is not the same as Math.trunc
. When the value does not satisfy -2^{31} - 1 < value
< 2^{31} (-2147483649 < value
< 2147483648), the conversion would overflow.
const a = ~~2147483648; // -2147483648 const b = ~~-2147483649; // 2147483647 const c = ~~4294967296; // 0
Only use ~~
as a substitution for Math.trunc()
when you are confident that the range of input falls within the range of 32-bit integers.
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
Specification |
---|
ECMAScript Language Specification # sec-math.trunc |
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 |
38 |
12 |
25 |
No |
25 |
8 |
38 |
38 |
25 |
25 |
8 |
3.0 |
1.0 |
0.12.0 |
© 2005–2022 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