Имеем число Decimal с некоторым числом знаков после запятой. Задача округлить в формат денежной единицы в ближнюю часть
from decimal import Decimal, ROUND_HALF_UP print Decimal(Decimal(str(1.1247)).quantize(Decimal('.001'), rounding=ROUND_HALF_UP)) >>>1.125 # правильно при округлении до трех знаков print Decimal(Decimal(str(1.1247)).quantize(Decimal('.01'), rounding=ROUND_HALF_UP)) >>>1.12 # не правильно при округлении до двух знаков. Ожидается 1.13 print Decimal(Decimal(str(1.124)).quantize(Decimal('.01'), rounding=ROUND_HALF_UP)) >>>1.12 # правильно при округлении до двух знаков print Decimal(Decimal(str(1.125)).quantize(Decimal('.01'), rounding=ROUND_HALF_UP)) >>>1.13 # правильно при округлении до двух знаков
Т.е. округляет правильно при уменьшении на 1 знак после запятой. А когда знаков больше, то они не учитываются в расчете. А это не верно.
Как заставить правильно округлять 1.1247 в 1.13 ?