Python十进制自定义上下文

弗拉米尼奥(FlamínioMaranhão)

decimal.localcontext当在另一个上下文中使用上下文管理器时,显然会被忽略。以下示例说明了这一点(Python 2.7):

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

为什么会发生这种情况,以及如何解决?

金库

发生这种情况是因为您实际上没有进入上下文管理器(调用__enter__方法)。什么也没打电话,localcontext(Context(prec=precision)).__enter__因为

with precision_context(PRECISION):

只进入precision_context上下文管理器。

您可以通过添加另一条with语句来解决该问题

with precision_context(PRECISION) as ctx:
    # Enter `localcontext(Context(prec=precision))`
    with ctx:
        print(SMALL_NUMBER + 1) # prints 1.000

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

固定点的Python十进制上下文

来自分类Dev

固定点的Python十进制上下文

来自分类Dev

自定义数字十进制格式

来自分类Dev

.quantize()的十进制舍入不使用原始上下文

来自分类Dev

Spring Boot:注入自定义上下文路径

来自分类Dev

将自定义服务注入Behat上下文

来自分类Dev

JSON-LD自定义上下文

来自分类Dev

ASP身份自定义上下文

来自分类Dev

ASP身份自定义上下文

来自分类Dev

TypeScript中的JsTree自定义上下文菜单

来自分类Dev

使用自定义格式将收到的长数字格式设置为十进制的十进制格式

来自分类Dev

xsd自定义十进制类型定义,不为零

来自分类Dev

在Spring Boot中何时使用自定义上下文路径而不是根上下文

来自分类Dev

Python:使用自定义sys.excepthook在异常发生之前在上下文中的行号处恢复程序

来自分类Dev

十进制分隔符从控制面板自定义设置

来自分类Dev

如何使用自定义DbFunction将字符串转换为十进制

来自分类Dev

具有十进制格式的WPF自定义文本框

来自分类Dev

在SQL Server中自定义舍入十进制值

来自分类Dev

将十进制值转换为自定义格式

来自分类Dev

十进制分隔符从控制面板自定义设置

来自分类Dev

具有十进制格式的WPF自定义文本框

来自分类Dev

自定义舍入十进制数字C#

来自分类Dev

适用于Python的Docker SDK:如何使用自定义Dockerfile和自定义上下文构建映像

来自分类Dev

如何在groovy中将上下文传递给自定义定义的方法?

来自分类Dev

如何为Orion上下文代理定义自定义API结构?

来自分类Dev

在MATLAB中将十进制整数转换为二进制(最多20位)的自定义函数

来自分类Dev

如何在jenkinsfile中为docker.build设置自定义上下文

来自分类Dev

自定义字体中的“上下文替代项”被用作默认值

来自分类Dev

如何将自定义上下文放入干草堆索引模板

Related 相关文章

  1. 1

    固定点的Python十进制上下文

  2. 2

    固定点的Python十进制上下文

  3. 3

    自定义数字十进制格式

  4. 4

    .quantize()的十进制舍入不使用原始上下文

  5. 5

    Spring Boot:注入自定义上下文路径

  6. 6

    将自定义服务注入Behat上下文

  7. 7

    JSON-LD自定义上下文

  8. 8

    ASP身份自定义上下文

  9. 9

    ASP身份自定义上下文

  10. 10

    TypeScript中的JsTree自定义上下文菜单

  11. 11

    使用自定义格式将收到的长数字格式设置为十进制的十进制格式

  12. 12

    xsd自定义十进制类型定义,不为零

  13. 13

    在Spring Boot中何时使用自定义上下文路径而不是根上下文

  14. 14

    Python:使用自定义sys.excepthook在异常发生之前在上下文中的行号处恢复程序

  15. 15

    十进制分隔符从控制面板自定义设置

  16. 16

    如何使用自定义DbFunction将字符串转换为十进制

  17. 17

    具有十进制格式的WPF自定义文本框

  18. 18

    在SQL Server中自定义舍入十进制值

  19. 19

    将十进制值转换为自定义格式

  20. 20

    十进制分隔符从控制面板自定义设置

  21. 21

    具有十进制格式的WPF自定义文本框

  22. 22

    自定义舍入十进制数字C#

  23. 23

    适用于Python的Docker SDK:如何使用自定义Dockerfile和自定义上下文构建映像

  24. 24

    如何在groovy中将上下文传递给自定义定义的方法?

  25. 25

    如何为Orion上下文代理定义自定义API结构?

  26. 26

    在MATLAB中将十进制整数转换为二进制(最多20位)的自定义函数

  27. 27

    如何在jenkinsfile中为docker.build设置自定义上下文

  28. 28

    自定义字体中的“上下文替代项”被用作默认值

  29. 29

    如何将自定义上下文放入干草堆索引模板

热门标签

归档