2016-03-04 2 views
0
n = "11004691915666669" 
parseInt(n) 
parseInt(n, 10) 

Оба результата: 11004691915666668 Это отключено одним. Я проверил некоторые другие значения, и они правильно конвертируются. Это ошибка в библиотеке или есть лучший способ конвертировать?javascript parseInt() не работает?

+3

Javascript будет обрабатывать точность чисел до 16 цифр. –

+0

эй, это довольно близко, не так ли? – dandavis

+0

Проблема: 'Number.MAX_SAFE_INTEGER <11004691915666669' – Oriol

ответ

3

См. this SO question for more details. Ваше значение превышает максимальное целое число, которое Javascript может представлять с полной точностью.

Под капотом Javascript не понимает целые числа, все плавает. Вы попадаете на уменьшенную точность, которая возникает, когда вы получаете очень большие числа.

0

Из ссылки на Javascript на MDN, указанном here.

Целое диапазон для числа определяется следующим образом:

var biggestInt = 9007199254740992; 
var smallestInt = -9007199254740992; 

Который почему, так как ваш номер превышает значение biggestInt, заранее Javascript, метод ParseInt только возвращает целое значение, которое находится в пределах диапазона Integer для номера в Javascript, как определено выше.

Смежные вопросы