Python Glossary English

все 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Сообщить о неточности