Read more

Heads up: JavaScript does not like big numbers

Tobias Kraze
November 10, 2014Software engineer at makandra GmbH

In a JavaScript console, type this:

> 9112347935156469760
Illustration web development

Do you need DevOps-experts?

Your development team has a full backlog? No time for infrastructure architecture? Our DevOps team is ready to support you!

  • We build reliable cloud solutions with Infrastructure as code
  • We are experts in security, Linux and databases
  • We support your dev team to perform
Read more Show snapshot

Ooops. And that's not a float!

This occurs because JavaScript uses double precision floats to store numbers.

So according to IEEE floating point definition Show snapshot only numbers between -(2^53 - 1) (-9007199254740991) and 2^53 - 1 (9007199254740991) can safely be represented in JavaScript.

Note that ECMAScript 6 will probably also offer Number.MAX_SAFE_INTEGER Show snapshot (and Number.MAX_SAFE_INTEGER) that point to those numbers, but browser support for that is still scarce.

For arbitrary large numbers (even >= 2^53), BigInt objects Show snapshot can be used starting with ECMAScript 2020. Recent versions of Chrome/FF/Opera already support the new class, but it won't work on other Browsers like IE11/Edge/Safari. (Last checked on January 2020)

Posted by Tobias Kraze to makandra dev (2014-11-10 18:09)