все Python 3Числа и математикафункция
decimal.localcontext()
decimal
Контекстный менеджер: внутри with действует копия контекста decimal с другими настройками, а на выходе прежний восстанавливается.
Синтаксис
with decimal.localcontext(ctx=None, **kwargs) as ctx: ...
Главная ловушка — getcontext().prec = 50: это меняет точность для всего потока до конца программы, в том числе в чужих функциях и тестах. localcontext() ограничивает изменение блоком with и восстанавливает старый контекст даже при исключении. Числа, посчитанные внутри, сохраняют лишние цифры и снаружи — округлите их унарным плюсом (+x) уже после блока.
Примеры
# Python 3.11+
from decimal import Decimal, localcontext
with localcontext(prec=5):
x = Decimal(1) / 3
print(x) # → 0.33333
print(Decimal(1) / 3) # → 0.3333333333333333333333333333
from decimal import Decimal, getcontext
getcontext().prec = 3
print(Decimal(2) / 3) # → 0.667 — и так теперь везде
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности