Возможное дублирование:
Ограничения с плавающей запятой
Здесь используется Python 2.7.
Может кто-нибудь объяснить, почему это происходит в оболочке?
>>> 5.2-5.0
0.20000000000000018
Поиск дал информацию о разных масштабах чисел, не дающих правильных результатов (очень маленькое число и очень большое число), но это казалось довольно общим, и, учитывая, что числа, которые я использую, имеют одинаковый масштаб, я не думаю, что вот почему это происходит.
РЕДАКТИРОВАТЬ: Я полагаю, я не определил, что «это происходит», я имел в виду, что он возвращает 0,2 ... 018, а не просто приводит к 0,2. Я получил эти раунды печати и удалил часть печати во фрагменте кода, так как это вводило в заблуждение.
5.2 - 5.0 != 0.2
, почему оценка выражения не делает то же самое, что и его печать, и почему / чем отличаются repr и str? Мой ответ сосредоточен на части 1, Ашвини Чаудхари - идеальный ответ на часть 2, а Мартейн Питерс прекрасно справляется с частью 3. - person abarnert   schedule 26.09.2012