Parse Float имеет предел округления?Как я могу это исправить? - PullRequest
8 голосов
/ 03 ноября 2011

Я настроил систему, которая анализирует компактную строку данных в JSON.Я использую 19-значный номер для хранения идентификаторов.К сожалению, любое число больше 17 цифр, parseFloat() округляет последние несколько цифр.

Это разрывает всю строку данных.Можно это исправить?

Например 8246295522085275215 превращается в 8246295522085276000.Почему это?

http://jsfiddle.net/RobertWHurst/mhZ7Q/

Ответы [ 3 ]

12 голосов
/ 03 ноября 2011

JavaScript имеет только один числовой тип, который является двойной точностью IEEE 754 с плавающей точкой . Это означает, что у вас есть максимум 52 бита, что немного больше 15 знаков после запятой.

Если вам нужна большая точность, вам нужно использовать библиотеку bignum или работать со строками.

3 голосов
/ 03 ноября 2011

Числа в JavaScript теряют точность, если они превышают определенное значение.

Согласно http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference, целые числа надежны только до 15 цифр (9 * 10^15, если быть точным).

1 голос
/ 23 ноября 2013

Попробуйте один из них 1. Используйте строку 2. Разделите ваш номер на два и сохраните меньшие части в массив 3. Бигнумская библиотека 4. Используйте меньшее число, если вы можете

...