## DEV Community is a community of 554,041 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

# Getting the integer part from a number in Javascript

Costin Manda Originally published at siderite.dev on ・1 min read

Just a thing I learned today: using the bitwise not operator (~) on a number in Javascript ignores its fractional part (it converts it to integer first), therefore using it twice gives you the integer part of original number. Thanks to fetishlace for clarifications.

Notes:

• this is equivalent to (int)number in languages that support the int type
• this is equivalent to Math.trunc for numbers in the integer range
• this is equivalent to Math.floor only for positive numbers in the integer range

Examples:
`~~1.3 = 1`
`~~-6.5432 = -6`
`~~(2 ** 32 + 0.5) = 0`
`~~10000000000 = 1410065408`

## Discussion

fetishlace

It works as a Math.trunc(), but be careful if u need to use it with a big numbers since for example
~~(2 ** 30 + 0.123) // 1073741824
~~(2 ** 31 + 0.303) //-2147483648
~~(2 ** 32 + 0.5) // 0

Costin Manda

Thanks! To my shame I've never actually used either Math.trunc or ** in Javascript :D Live and learn. I'll update the post.

fetishlace

Various people prefer various tools, it is not the shame i guess :-)
** is newer and handy, way better 2**16 than write Math.pow(2,16)
And I would rather use Math.trunc() than Number.parseInt() - which is in play here too. In fact parseInt(inputValue, 10) with explicit radix argument is the right way to go according to Airbnb standards.
That double bit flip ~~ looks nice and short, and it could run faster than others - that is why it has it's place - but some people are really confused seeing it + this is not a bottleneck normally anyway + it "breaks" sooner than those alternatives for higher numbers...
Anyway I am seeing all of these in other people's code.