Почему функция конвертирования типа int() в Python выдаёт разный результат для одинаковых параметров?

Речь о двух выражениях:
print int (100 * (11.20 - 11))
print int (20.0)

Выражения 100 * (11.20 - 11) и 20.0 равнозначны
Почему функция int() для вычисляемого выражения даёт результат 19, а для указанного вручную - 20?

Документацию читал, просветление не наступило.
  • Вопрос задан
  • 2685 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Выражения 100 * (11.20 - 11) и 20.0 равнозначны

Нет, неравнозначны: в скобке первого выражения число с плавающей точкой, непредставимое в двоичной системе в конечном виде -- 0.2dec = 0.001100110011...bin. Точность арифметики ограничена, поэтому 100 * 0.2 != 20.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ShiftInsert Автор вопроса
Я бы согласился с Вашим утверждением, если бы во втором выражении в скобках было бы число БЕЗ плавающей точки. Но там точно такое же число с плавающей точкой, как и в первом выражении, "непредставимое в двоичной системе..." и т.д.
Ответ написан
Ваш ответ на вопрос

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

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