什么是'decimal.getcontext().copy()'的意思

zjm*_*126 -6 python

import decimal                               # Decimals
a=decimal.getcontext().copy()
print a
Run Code Online (Sandbox Code Playgroud)

什么是有用的.

Cha*_*ara 7

我正在回答假设一个新手.

"a"是一个变量.变量是一个逻辑单元,在执行程序时将值/字符串等保留在计算机的内存中.作为一个例子,如果你要添加1和2并得到答案,你应该在内存中创建一个"变量"说"a"并为"a"分配值1 + 2

在此代码中,您导入了一个名为decimal的库.它包含一组操作或方法.然后对它执行一些操作并将输出分配给名为"a"的变量.然后你试图将它打印到控制台.

注意:您不应该使用变量名称,如a,b.这不是一个好习惯.你应该使用一个有意义的词.


Jud*_*ill 5

虽然我同意这里的许多其他评论,但我想我会扔骨头。

decimal模块是一个用于对任意精度数进行算术运算的实用程序。这在某些科学环境中用于对受舍入误差影响的事物进行计算。经典示例是计算 pi 的第 9999 位数字。你不能用浮动来做到这一点。

十进制库使用“上下文”的概念来决定您真正想要的精度。由于您想要的精度越高,计算的运行速度就越慢。该decimal.getcontext()部分返回默认上下文。但是通过一个疯狂的“陷阱”(我实际上已经沦为牺牲品),这实际上只是一个指针。因此,如果您要使用 a 更改上下文,decimal.setcontext('foo')您实际上也会更改a。该模块很方便地有一个.copy()方法。

最初的程序员可能这样做是为了保存上下文的副本供以后使用。也许他/她想以较低的精度执行一部分计算以节省时间,然后又想以更高的精度执行困难的部分。

尽管在 python > 2.5 中,这最好使用像“with”这样的上下文管理器来完成

from decimal import localcontext

with localcontext() as ctx:
    ctx.prec -= 5   # Perform a low precision calculation
    s = calculate_something()
s = +s  # Round the final result back to the default precision
Run Code Online (Sandbox Code Playgroud)

但是如果没有其他相关代码,我的猜测并不比你的好。

虽然在此处的 python 文档中很容易找到所有这些之前,我已经使用了小数模块。试着去那里先四处看看这样的问题……如果你能自己弄清楚,你就会记住更长的时间。当我们回答问题时,您会在脑海中感受到我们其他人的温暖感觉。

  • @JudoWill:这里的基本问题是@zjm1126 很少阅读我们写的东西,因此正如@pavium 上面提到的,根本没有学习如何帮助自己。我们可以继续捐赠代码片段,但我们正在浪费 OP 和我们自己的时间。他确实需要学习更多的英语,然后才能从散文的回答中获得任何东西。 (3认同)