0

我将使用 python 3 非常精确地计算 pi 的值。为此,我现在首先需要一个精确的值426880*(10005)^0.5 ,使用

>>> from decimal import *

>>> getcontext().prec = 100000

>>> Decimal(10005).sqrt()

我得到了 10005 的根值,精确到 100,000 位。但是,当我尝试将其乘以 426880 时,使用:

>>> from decimal import *

>>> getcontext().prec = 1000000

>>> Decimal(426880) * Decimal(x)

x 是 10005 的根,精确计算为 100,000 位我只得到一个 28 位数字而不是指定的精度。如何精确地乘以这些值?

4

2 回答 2

0

我认为您的问题是您要么将 x 保存在字符串中并重新解释,要么将先前计算中的 x 作为 aDecimal并且您正在执行Decimal(A_Decimal). 如果 x 已经是小数,则不要重新解释它,如果为了节省时间,你正在节省如果然后使用picklecpickle将它保存为对象。顺便说一句,尽量避免import *- 使用命名空间。

顺便说一句,在从任何地方导入 x之前,请务必设置当前精度!

于 2013-07-14T07:00:00.930 回答
-1

我认为问题是当你这样做时

 >>> Decimal(426880) * Decimal(x)

它被 Python 解释为

>>> Decimal(426880) * Decimal(float(x))

当你第一次声明x时,尽量确保它被声明为 aDecimal而不是一个floating 点数。我可能大错特错,但我认为你应该检查你的代码,看看你是否已经这样做了。

于 2015-01-03T20:43:31.840 回答