Моя проблема очень проста, но я не уверен, есть ли "родное" решение с использованием JSON.parse.
Я получаю эту строку из API:
{ "key" : -922271061845347495 }
Когда я использую JSON.parse в этой строке, он превращается в этот объект:
{ "key" : -922271061845347500 }
Как вы можете видеть, синтаксический анализ останавливается, когда число слишком велико (вы можете проверить это поведение здесь). Он имеет только 15 точных цифр, последний округлен, а те, которые установлены после 0. Есть ли "родное" решение для сохранения точного значения? (это идентификатор, поэтому я не могу его округлить)
Я знаю, что я могу использовать регулярное выражение для решения этой проблемы, но я бы предпочел использовать "родной" метод, если он существует.
Ваше предположение о том, что синтаксический анализ останавливается после неправильного ввода определенных цифр.
Здесь говорится здесь:
В JavaScript все числа - это числа с плавающей запятой. Использование JavaScript стандартный 8-байтовый числовой формат с плавающей запятой IEEE, что означает диапазон от:
± 1.7976931348623157 x 10 308 - очень большой и ± 5 x 10 -324 - очень маленький.
Поскольку JavaScript использует числа с плавающей запятой, точность обеспечивается только для целых чисел: -9007199254740992 (-2 53) и 9007199254740992 (2 53)
Вы числитесь за пределами "точного" диапазона, поэтому он преобразуется в ближайшее представление номера JavaScript. Любая попытка оценить это число (с использованием JSON.parse, eval, parseInt) приведет к потере данных. Поэтому я рекомендую передать ключ в виде строки. Если вы не контролируете API, напишите запрос функции.
{ "key" : "-922271061845347495" }