В learn.js приводится пример:
console.log( 9999999999999999 ); // покажет 10000000000000000
В учебнике говорится, что причина такому поведению в том, что отведенных 52 бит на цифры до десятичной запятой не хватает. Я не понимаю. По идее, если не хватает памяти, число наоборот должно уменьшаться, а не наоборот - увеличиваться как это происходит в примере выше (было 16, стало 17 знаков).
P.S. И кстати, насколько я знаю, если числу не хватает отведенной ему памяти, должно выводить Infinity. Почему в этом случае не выводится Infinity?
Может кто-нибудь получше объяснить как это работает?
console.log( 1e500 ); //Infinity– Eva Aug 12 '21 at 08:32console.log(Number.MAX_SAFE_INTEGER); //9007199254740991Значение чисел которых больше максимально безопасного числа, могут иметь неточности - округляться и т.д. АInfinityвыводится, когда число явно превышает отведенную ему память - 64 бита. – Eva Aug 12 '21 at 08:32