【发布时间】:2015-03-27 04:21:58
【问题描述】:
请放轻松,我已经学习 Python 一个星期了! 我想我会尝试使用 Rumanujan 公式计算 Pi。我相信我能够正确编码。 我的答案是截断,我希望它用 200 dp 表示。在 C 语言中,我可能会使用 malloc 来执行此操作,但我知道 Python 不能那样工作。 我想从中学到的一点是:截断是由表示浮点数的限制引起的,如果是的话,是否可以修复?
谢谢。
import math
from decimal import *
getcontext().prec = 200
def iterate(n):
sum = 0
Decimal(sum)
sum = (math.factorial(4*n))
sum = (sum/math.pow(math.factorial(n), 4))
sum = sum*((26390*n +1103)/math.pow(396, (4*n)))
return sum
ans=0
Decimal(ans)
print "Choose the number of iterations:\n"
itnum = int(raw_input())
for n in range (0, itnum+1):
this_iteration = 0
Decimal(this_iteration)
this_iteration = iterate(n)
ans = ans + this_iteration
ans = ans*(math.pow(8, 0.5)/9801)
ans = 1/ans
print "%.200f" % ans
【问题讨论】:
-
请注意,您的代码中出现了两次数字 200。您需要更改它们以打印更多数字。我敢打赌,您在开始时更改 prec,但在脚本末尾不更改格式字符串
-
即使我使用 %r 它仍然会被截断
-
以上问题回答了我的问题