
Мы же просто выводим число, что может пойти не так?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Под капотом, в JavaScript нет целых чисел.
Все они представлены как 64-битные числа с плавающей точкой. Такой формат еще называют double precision.
Первые 52 бита используются, чтобы хранить двоичные цифры, 11 битов хранят позицию плавающей точки и 1 бит отвечает за знак и определяет положительное число или отрицательное.
Когда “не хватает места” чтобы сохранить большое целое число, происходит округление до другого ближайшего целого, которое полностью помещается в выделенные 64 бита.
Значащие биты числа 9999999999999999 невозможно сохранить используя только 52 бита, поэтому при округлении мы избавляемся от самого младшего бита, сдвигаем точку и получаем число 10000000000000000.
В JavaScript, такая ситуация считается нормальной и не приводит к ошибке.
Если не совсем понимаешь, что происходит тут, советую изучить лекцию о двоичной системе курса CoderslangJS.
ОТВЕТ: на экран будет выведено число 10000000000000000