Умножение

Подскажите почему так получается:

>>> 50.0 * 1.1
55.000000000000007
>>> 50.0 * 1. + 50.0 * .1
55.0


50000 или 90 или 90000…
  • Вопрос задан
  • 2416 просмотров
Пригласить эксперта
Ответы на вопрос 3
4dmonster
@4dmonster
Потому, что числа с плавающей запятой в компьютере представляются в «приблизительном» виде.
ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D1%81_%D0%BF%D0%BB%D0%B0%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B9_%D0%B7%D0%B0%D0%BF%D1%8F%D1%82%D0%BE%D0%B9
Ответ написан
@Aquahawk
Ответ написан
Комментировать
@gribozavr
Так получается потому что не каждое число, представимое конечной десятичной дробью, представимо конечной двоичной дробью. Погрешность получается тогда, когда эту бесконечную двоичную дробь сохраняют в мантиссе конечной длины.

Например, 0.3_10 = 0.010011001100110011..._2 = 0.01(0011)_2 — бесконечная периодическая двоичная дробь.

0.0100110011001100110011_2 = 0.2999999523162841796875_10
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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