Диспетчер контекста decimal.localcontext
, по-видимому, игнорируется при использовании в другом контексте. Следующий пример иллюстрирует это (Python 2.7):Python decimal custom context
from decimal import Decimal, Context, localcontext
from contextlib import contextmanager
@contextmanager
def precision_context(precision):
yield localcontext(Context(prec=precision))
PRECISION=4
SMALL_NUMBER=Decimal('0.0001')
with localcontext(Context(prec=PRECISION)):
# This is working as it should
print SMALL_NUMBER + 1 # prints 1.000
with precision_context(PRECISION):
# But this is not
print SMALL_NUMBER + 1 # prints 1.0001
Почему это происходит, и как ее решить?
Великого, спасибо. Я просто помещаю этот код в функцию 'precision_context'. –