@sergeyviktorovich

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

вот консоль выдает такой результат,почему?
0.06*11 = 0.6599999999999999
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 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. И какую бы конечную запись этой дроби вы ни взяли, она всегда будет содержать ошибку округления.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы