|
|
|
|
|
by smitop
1942 days ago
|
|
I think you misread the sentence. It's not the largest value JS can represent, it's the largest value it can "reliably represent". After 2^53 - 1 you get incorrect results when dealing with integers, making the results not "reliable". |
|
Every non-negative integer up to and including Number.MAX_SAFE_INTEGER can be represented exactly by the Number type, in any compliant JavaScript implementation. It's also true though that Number.MAX_VALUE is itself defined to be an integer. It's therefore not true to say that Number.MAX_SAFE_INTEGER is the greatest integer that can be exactly represented by JavaScript's Number type.
Instead, Number.MAX_SAFE_INTEGER is the greatest integer such that Number.MAX_SAFE_INTEGER can be represented precisely by the Number type, and all non-negative integers less than Number.MAX_SAFE_INTEGER can be represented exactly by the Number type. (See also my second edit to my earlier post.)
It seems incorrect then that the article states:
> 2^53 - 1, which is the largest number JavaScript can reliably represent with the Number primitive and represented by the Number.MAX_SAFE_INTEGER constant
There's discussion of the term safely represent on the MAX_SAFE_INTEGER page. [0]
[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...