@sergeyviktorovich

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

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

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽