UruchamiającJavaScript parseInt konwersji jest buggy
console.log(parseInt("9658921879781125"))
9658921879781124
, która jest mniejsza niż pierwotnej wartości.
Dlaczego tak się dzieje?
UruchamiającJavaScript parseInt konwersji jest buggy
console.log(parseInt("9658921879781125"))
9658921879781124
, która jest mniejsza niż pierwotnej wartości.
Dlaczego tak się dzieje?
To byłoby ponieważ
9658921879781125 > Number.MAX_SAFE_INTEGER // true
Więc to jest niebezpieczne, aby spróbować pracy z liczb większych niż Number.MAX_SAFE_INTEGER
MAX_SAFE_INTEGER
stałym ma wartość9007199254740991
(9,007,199,254,740,991 lub ~ 9 kwadrylion). Rozumowanie tej liczby jest to, że JavaScript używa formatu liczb zmiennoprzecinkowych podwójnej precyzji, jak określono w IEEE 754 i może reprezentować tylko bezpiecznie numerów pomiędzy - (2 - 1) i 2 - 1.Bezpieczeństwo w tym kontekście odnosi się do możliwości dokładnego odwzorowania liczb całkowitych i ich poprawnego porównania.
http://2ality.com/2012/07/large-integers.html –
ale jest w stanie przerobić 9658921879781126 prawidłowo odpowiedź –
Zobacz G. Petrioli użytkownika. To niebezpieczne, nie oznacza to, że za każdym razem zawodzi. – NikxDa