#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. Источник
Комментариев нет:
Отправить комментарий