#javascript
This question already has answers here: Отображение числа 9223372036854775807 (3 ответа) Вычисления на числах с плавающей точкой не работают (2 ответа) Закрыт 12 месяцев назад. В общем наткнулся вот на такой код: var x = 9027199254741024; console.log(x); x = x + 1; console.log(x); Почему в обоих случаях один и тот же результат? Если убрать один десяток, то все нормально складывается. Если добавить десяток к начальному x, то тоже все нормально складывается=>переполнений никаких нету. А если сделать так, то вообще 2 отнимается вместо 1: var x = 9027199254741010; console.log(x); x = x - 1; console.log(x); Вроде бы, тут все логично и складываются числа, а не строки. Почему поведение такое неожиданное? P.S Вопрос не является дублем, так как там идет речь про отображение, а конкретно тут про арифметику.
Ответы
Ответ 1
Константа MAX_SAFE_INTEGER имеет значение 9007199254740991. Смысл этого числа в том, что в JavaScript используется формат чисел с плавающей запятой двойной точности, как определено в стандарте IEEE 754, а он может безопасно представлять числа только в диапазоне от -(2^53 - 1) до 2^53 - 1. Источник
Комментариев нет:
Отправить комментарий