Как использовать parseInt() в JavaScript

76
5

Я использовал parseInt(), чтобы получить большие большие числа, но он работает как ожидалось. Например,


parseInt("18014398241046527", 10); // Gives me 18014398241046528??
parseInt("18014398241046528", 10); // Gives me 18014398241046528
parseInt("18014398241046529", 10); // Still gives me 18014398241046528??

Я тестировал их как на Chrome версии 20.0.1132.47, так и на Firefox 12.0. Было ли это потому, что числа, которые я пытался проанализировать, были слишком большими?

спросил(а) 2021-01-25T18:04:46+03:00 4 месяца, 2 недели назад
1
Решение
110

Число в JavaScript - это двойная точность с плавающей запятой, которая может содержать только до 53-бит точности (приблизительно 16 десятичных цифр). Номер, который у вас есть в вопросе, составляет 17 цифр, поэтому он не может точно сохранить номер.


Статья в Википедии о синтаксис/номер XML.

Ссылка на JavaScript (1.1) стандарт.

ответил(а) 2021-01-25T18:04:46+03:00 4 месяца, 2 недели назад
45

Это не проблема с parseInt; это слишком длинное (слишком точное - см. nhahtdh ответ) для типа данных типа JavaScript (доказательство: +"18014398241046527" также дает 18014398241046528).

Я думаю, что единственный способ обойти это - ввести номер в виде строки и работать над ним в кусках.

ответил(а) 2021-01-25T18:04:46+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема