Лучший способ справиться с очень большими длинными номерами в Ajax? - PullRequest
5 голосов
/ 03 апреля 2011

Javascript представляет все числа как числа с плавающей запятой двойной точности.Это означает, что он теряет точность при работе с числами в самом верхнем конце 64-битного типа данных Java Long - что угодно после 17 цифр.Например, число:

714341252076979033

... становится:

714341252076979100

В моей базе данных используются длинные идентификаторы, а некоторые находятся в опасной зоне.Я мог бы изменить ошибочные значения в базе данных, но это было бы сложно в моем приложении.Вместо этого прямо сейчас я довольно старательно проверяю, чтобы сервер кодировал длинные идентификаторы как строки во всех ответах ajax.

Однако я бы предпочел разобраться с этим в Javascript.Мой вопрос: есть ли лучший метод принудительного разбора JSON для обработки числа как строки?

Ответы [ 2 ]

9 голосов
/ 03 апреля 2011

Вы должны отправлять свои значения в виде строк (то есть заключенных в кавычки), чтобы Javascript рассматривал их как строки, а не числа.

Я не знаю, как обойти это.

0 голосов
/ 03 апреля 2011

JavaScript представляет все числа как 64b IEEE 754. Число с плавающей запятой.

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

Если вам нужночтобы изменить базу данных, измените ее, чтобы отправить 52-битные целые числа.Или 53-разрядные целые числа со знаком.

В противном случае отправьте их как строки.

...