parseInt изменяет целое число

Я пытаюсь извлечь из заголовка страницы число (72157648141531978), которое начинается с 21-го символа:

parseInt(document.title.substring(21), 10);  

Это возвращает строку в виде целого числа 72157648141531980. Я не могу понять, почему он меняет последние два числа. Любая помощь будет оценена по достоинству.


person metalfoley    schedule 09.10.2014    source источник
comment
Что такое полная строка заголовка?   -  person Alfredo Delgado    schedule 09.10.2014
comment
@Sebas - О, теперь я вижу это.   -  person Derek 朕會功夫    schedule 09.10.2014
comment
2ality.com/2013/01/parseint.html, интересные статьи, all numbers are floating points in javascript с ума сошел!   -  person Sebas    schedule 09.10.2014


Ответы (2)


Согласно Каково максимальное целочисленное значение JavaScript, к которому число может перейти без потери точности? максимальное значение целого числа равно 9007199254740992.

Я попробовал ваш расчет на http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parseint, и я могу подтвердить вашу проблему.

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

person Guy Lowe    schedule 09.10.2014

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

person Boann    schedule 09.10.2014