我有两个十进制字段,一个精度为18,另一个精度为200.我想计算第一个不关心超过18的位,但是对于较大的数,我需要考虑.
如果使用get_context(),则会影响全局共享精度.关于每操作或每十进制精度我缺少什么吗?
编辑:我正在使用Python的十进制模块.
解决方法:
有一个全局上下文,但是您不需要使用该上下文.您可以构造其他上下文并使用它们,或者根据每个操作显式地使用它们:
z = ctx.add(x, y)
b = a.ln(ctx)
或通过使用decimal.localcontext设置临时本地上下文:
with decimal.localcontext(ctx):
z = x + y
b = a.ln()
第一种选择不太可能泄漏到您不希望执行的操作中,例如库例程或协程,而第二种选择则减少了当您需要执行大量操作时意外将上下文从操作中移开的可能性具有相同的上下文.至少上下文不会泄漏到其他线程中,因为每个线程都有自己的当前上下文.