Лучший способ справиться с очень большими длинными номерами в Ajax?
Javascript представляет все числа как числа с плавающей запятой двойной точности. Это означает, что он теряет точность при работе с числами в самом верхнем конце 64-битного типа данных Java Long - что угодно после 17 цифр. Например, номер:
714341252076979033
... становится:
714341252076979100
Моя база данных использует длинные идентификаторы, а некоторые находятся в опасной зоне. Я мог бы изменить ошибочные значения в базе данных, но это было бы сложно в моем приложении. Вместо этого прямо сейчас я довольно старательно проверяю, что сервер кодирует длинные идентификаторы как строки во всех ответах ajax.
Тем не менее, я бы предпочел разобраться с этим в Javascript. Мой вопрос: есть ли лучшая практика для принудительного разбора JSON для обработки числа как строки?
2 ответа
Вы должны отправлять свои значения в виде строк (то есть заключенных в кавычки), чтобы Javascript рассматривал их как строки, а не числа.
Я не знаю, как обойти это.
JavaScript представляет все числа как 64b IEEE 754 с плавающей точкой.
Если ваше целое число не может поместиться в 52 бита, то оно будет усечено, что и произошло здесь.
Если вам нужно изменить базу данных, измените ее, чтобы отправить 52-битные целые числа. Или 53-битные целые числа со знаком.
В противном случае отправьте их как строки.