JavaScript: когда число слишком большое
особенности работы с целыми числами в JavaScript
Какой результат получится при выводе в консоль большого числа. Например 9999999999999999
.
console.log(9999999999999999);
На первый взгляд ответ очевиден: на экране мы увидим именно то целое, число которое и было передано в качестве аргумента.
Но все ли так просто?
Дело в том, что в JavaScript нет целых чисел. Обычные числа хранятся в формате IEEE-754 и называются числами с плавающей точкой двойной точности (double precision floating point numbers). Это означает, что каждое число представляют 64 бита, где 52 бита предназначены для хранения самого числового значения, 11 бит отслеживают положения десятичной точки и 1 бит предназначен для хранения знака числа, определяя положительным или отрицательным является число.
Когда места для хранения значения числа не хватает, оно округляется до ближайшего доступного значения.
Сохранить целое значение 9999999999999999
, используя 52 бита, невозможно. Поэтому число округляется до 10000000000000000
.
Именно 10000000000000000
пользователь увидит на экране. При этом JavaScript не выведет никаких предупреждений или сообщений об ошибках.
Спасибо за внимание.