Я пытаюсь создать небольшое приложение для расчета расходов. Это уже работает с float, но я предполагаю, что использование десятичных дробей может сделать код более понятным и простым. Просто небольшой пример, чтобы показать проблему, которая у меня возникла:
import decimal
decimal.getcontext().prec = 2
print ("{}".format(decimal.Decimal(1)/decimal.Decimal(3)))
вывод составляет 0,33, и мне нужны 2 цифры.
Давайте увеличим первое число с 1 до 10:
import decimal
decimal.getcontext().prec = 2
print ("{}".format(decimal.Decimal(10)/decimal.Decimal(3)))
вывод равен 3.3, и это не то представление, которое мне нужно. Я все еще хотел бы иметь две цифры после разделителя: 3,33 вместо 3,3. Я пробовал разные способы, такие как использование localcontext, но не удалось:
from decimal import Context, localcontext, Decimal
with localcontext(Context(2)):
print((Decimal("10") / 3))
Итак, как я могу видеть decimal.getcontext (). Pre c определяет количество цифр после разделителя, если переменная <1 или определяет общее количество цифр, если переменная> 0. Мне интересно, какое-нибудь простое решение всегда сохраняет 2 цифры после существования разделителя? Этот случай кажется довольно распространенным, и я считаю, что должно быть простое и элегантное решение, которое было найдено до меня.
Обновление: Кажется, что описание не было достаточно ясным, поэтому мое вопрос был связан с другим. Давайте попробуем уточнить :) Я ищу способ определить формат данных один раз в начале и сохранить его после, вместо того чтобы использовать quantize () каждый раз, когда я делаю операции деления или умножения. quantize () решает проблему только для одной переменной, и эта переменная не должна изменяться после этого. Например, если у меня есть 10 операций, тогда я должен использовать quantize () 10 раз, что кажется неэффективным, и в этом случае я не вижу существенных причин для изменения кода и использования десятичных знаков вместо float.