Skip to content Skip to sidebar Skip to footer

Why Is JavaScript's Number *display* For Large Numbers Inaccurate?

So in JavaScript, 111111111111111111111 == 111111111111111110000. Just type any long number – at least about 17 digits – to see it in action ;-) That is because JavaScript uses

Solution 1:

JavaScript integers can only be +/- 2, which is:

9007199254740992

One of your numbers is

111111111111111106560

which is considerably outside of the range of numbers that can accurately represented as an integer.

This follows the IEEE 754:

  • Sign bit: 1 bit
  • Exponent width: 11 bits
  • Significand precision: 53 bits (52 explicitly stored)

EDIT

The Display of numbers is sometimes rounded by the JavaScript engine, yes. However, that can be over-ridden using the toFixed method. (Warning, toFixed is known to be broken under some versions of IE).

In your console, type:

111111111111111122944..toFixed(0)

"111111111111111114752"


Post a Comment for "Why Is JavaScript's Number *display* For Large Numbers Inaccurate?"