Как мне обращаться с десятичной точностью, когда у меня маленькие и большие числа? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть два десятичных поля, одно с точностью до 18, а другое с точностью до 200. Я хотел бы, чтобы вычисления первого не интересовали места после 18, но я должен учитывать это для большего числа.

Если я использую get_context(), я влияю на общую, разделяемую точность.Есть ли что-то, чего мне не хватает в каждой операции или в десятичной точности?

Редактировать : я использую модуль Python decimal.

1 Ответ

0 голосов
/ 05 октября 2018

Существует глобальный контекст, но вам не нужно его использовать.Вы можете создавать дополнительные контексты и использовать их либо явно для каждой операции:

z = ctx.add(x, y)
b = a.ln(ctx)

, либо установив временный локальный контекст с помощью decimal.localcontext:

with decimal.localcontext(ctx):
    z = x + y
    b = a.ln()

ПервыйЭтот параметр с меньшей вероятностью попадет в операции, которые вам не нужны, например, в библиотечные подпрограммы или сопрограммы, тогда как второй параметр снижает вероятность случайного отключения контекста от операции, когда вам нужно выполнить кучу операций с помощьютот же контекст.По крайней мере, контекст не попадет в другие потоки, потому что каждый поток имеет свой текущий контекст.

...