我将使用python 3非常精确地计算pi的值。 为此,我首先需要 426880 *(10005)^ 0.5 的精确值 现在,使用
>>> from decimal import *
>>> getcontext().prec = 100000
>>> Decimal(10005).sqrt()
我得到了10005的root值 精确到100,000个数字。 但是,当我尝试将此乘以426880时使用:
>>> from decimal import *
>>> getcontext().prec = 1000000
>>> Decimal(426880) * Decimal(x)
x是10005的根,精确计算为100,000位 我只得到一个28位数而不是指定的精度。 如何精确地乘以这些值?
答案 0 :(得分:0)
我认为您的问题是,您要么将x保存在字符串中并重新解释,要么您之前的计算中的x为Decimal
,而您正在执行Decimal(A_Decimal)
。如果x已经是十进制,则不要重新解释它,如果节省时间则保存,然后使用pickle
或cpickle
将其保存为对象。 BTW尽量避免import *
- 使用名称空间。
顺便说一下,确保在从任何地方导入x之前设置当前精度!
答案 1 :(得分:-1)
我认为问题是当你做
时 >>> Decimal(426880) * Decimal(x)
它被Python解释为
>>> Decimal(426880) * Decimal(float(x))
首次声明x
时,请确保将其声明为Decimal
而不是float
点数。
我可能非常错误,但我认为你应该检查你的代码,看看你是否可以这样做。