JavaScript Number.MAX_VALUE
назван неправильно.Это не максимальное представимое значение.Это максимальное представимое конечное значение.Фактическое максимальное представимое значение равно бесконечности.
Если имя было правильным, так что Number.MAX_VALUE
было бесконечностью, тогда Number.MAX_VALUE + Number.MAX_VALUE == Number.MAX_VALUE
было бы истинно, потому что бесконечность плюс бесконечность истинно.
Какэто математическое значение Number.MAX_VALUE + Number.MAX_VALUE
выходит за пределы представимых конечных значений, поэтому оно округляется до бесконечности.
Number.MAX_VALUE + Number.MIN_VALUE == Number.MAX_VALUE
верно, поскольку арифметические округления до ближайшего представимого значения и добавление небольшого значения кмаксимальное конечное значение дает результат, очень близкий к максимальному конечному значению, поэтому он округляется до максимального конечного значения.
(Примечание. Правило о округлении до ближайшего представимого значения обрабатывает бесконечность, как если бы оно было в нормальномпоместите в конец конечных значений, поэтому любой результат, который больше или равен Number.MAX_VALUE
плюс половина «шага» за ним, округляется до бесконечности.)