Рассмотрим следующий код JavaScript:
alert(9999999999999999);
Когда я выполняю этот файл, я получаю следующий вывод:
Почему я получаю 100000000000
в alert()
? Может ли кто-нибудь дать предложения, пожалуйста?
Это проблема с тем, как JavaScript обрабатывает числа. Наибольшее возможное целочисленное значение в JavaScript составляет 9007199254740992.
Сравнивать:
Ваш номер: 9007199254740992
Наибольшее количество: 9999999999999999
Поэтому, если вы проверите 9007199254740992, он будет работать нормально, но еще один номер (9007199254740993) и JavaScript вернут 9007199254740992.
Чтобы дать более подробную информацию, номера JavaScript являются 64-битными значениями с плавающей запятой, наибольшее точное интегральное значение составляет 2 53.
Он представлен как двойной, и это число не может быть сохранено точно как double, потому что оно имеет слишком много значимых цифр. Результат, который вы получили, - это ближайший двойной, который можно представить.