@sergeyviktorovich

Почему браузер неправильно умножает числа?

вот консоль выдает такой результат,почему?
0.06*11 = 0.6599999999999999
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
cannibal_corpse
@cannibal_corpse
Верстальщик руками
Эта "фишка" не только в браузере и JS, а в целом - в машинном вычислении.
Есть даже интересный сайт, посвящённый этой проблеме, вот он
Если взять, например 0.2 и 0.3, то константы 0.2 и 0.3 будут аппроксимированы до своих истинных значений. Получается, что ближайшее к 0.2 значение double оказывается больше рационального числа 0.2, но ближайшее к 0.3 значение double меньше рационального числа 0.3. Сумма 0.1 и 0.2 оказывается больше рационального числа 0.3, и следовательно не соответствует константам в коде.

0.1 + 0.2 // -> 0.30000000000000004
(0.1 + 0.2) === 0.3 // -> false
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что 0.0610 в двоичной системе представляется бесконечной дробью 0.0(00011110101110000101)2. И какую бы конечную запись этой дроби вы ни взяли, она всегда будет содержать ошибку округления.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы