Это результат того, что многие десятичные знаки не могут быть точно представлены в двоичном формате.
Например, 0,25 может: это 0.01
(0 * 1, 0 * 1/2, 1 * 1/4). 0,1 не может (0.0001100110011...
), так же, как вы не можете написать 1/3 как полную десятичную (0.3333333333...
).
Если вы
print(12.45-12)
вы получите
0.45
потому что print
отображает только первые значащие цифры.
См. Python docs за отличное резюме.
Если вы позаботились о том, чтобы десятичные значения были точными (например, чтобы избежать сценария Супермена III в финансовом учреждении), посмотрите на модуль Decimal.
Duplicate. Пожалуйста, найдите плавающий пункт в Python. Пожалуйста. Вы говорите о валюте? Деньги? Используйте 'decimal'. –