Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 23, 2021 15:44:05

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Округление в money формат

python 2.7
Имеем число 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 ?

Отредактировано VadimK (Апрель 23, 2021 15:47:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version