views:

169

answers:

4

For a web application I want to be able to handle numbers up to 64 bits in size. During testing, I found that javascript (or the browser as a whole) seems to handle as much as 17 digits. A 64-bit number has a maximum of 20 digits, but after the javascript has handled the number, the least significant 3 digits are rounded and set to 0.... Any ideas where this comes from? More importantly, any idea how to work around it?

+5  A: 

I think you need to treat them as strings if you have reached Javascript limit (see here)

Fabien Ménager
+4  A: 

In Javascript, all numbers are IEEE double precision floating point numbers, which means that you only have about 16 digits of precision; the remainder of the 64 bits are reserved for the exponent. As Fabien notes, you will need to work some tricks to get more precision if you need all 64 bits.

GalacticCowboy
A: 

You could try to split them into two or more numbers (in a class maybe), but you'll might need some arithmetic helper functions to work with them.

Cheers

Pablo Cabrera
+2  A: 

As others note, JS implements doubles, so you'll have to look elsewhere to handle bigger numbers. BigInt is a library for arbitary precision math for integers.

Svend