все Python 3Числа и математикапонятие
decimal
модуль
Десятичная арифметика с заданной точностью и правилами округления: деньги и всё, где 0.1 + 0.2 обязано быть ровно 0.3.
Синтаксис
from decimal import Decimal
decimal берут там, где важна десятичная точность и явное округление: суммы в рублях, налоги, отчёты. float быстрее, но хранит двоичную дробь и даёт 0.30000000000000004; для точных обыкновенных дробей вроде 1/3 подходит fractions. Ошибаются, создавая Decimal из float: Decimal(0.1) переносит погрешность, поэтому значение передают строкой — Decimal('0.1').
Примеры
from decimal import Decimal
print(0.1 + 0.2) # → 0.30000000000000004
print(Decimal('0.1') + Decimal('0.2')) # → 0.3
print(Decimal(0.1) == Decimal('0.1')) # → False — из float приходит его двоичная погрешность
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности