提问人:Not Gartificial 提问时间:11/4/2021 最后编辑:Not Gartificial 更新时间:11/5/2021 访问量:184
我需要更多小数位进行 pi 计算 [已关闭]
i need more decimal places for pi calculation [closed]
问:
我正在尝试用 python 制作一个 Pi 计算器,但我需要更多的小数位。
如果有人编辑我的代码并仔细解释他们做了什么,那将有很大帮助。
这是我正在使用的代码。
import math
d = 0
ans = 0
display = 0
while True:
display += 1
d += 1
ans += 1/d**2
if display == 1000000:
print(math.sqrt(ans*6))
display = 0
# displays value calculated every 1m iterations
~85M 迭代后的输出:(3.14159264498239)
我需要超过15位小数(3.14159264498239........)
答:
1赞
LeopardShark
11/4/2021
#1
您使用的是一个非常缓慢收敛的 π²∕6 级数,因此您不会以这种方式获得非常精确的值。浮点限制会阻止 之后的进一步进展,但无论如何,您不会在任何合理的时间内走得更远。您可以通过以下组合来解决这些问题3.14159264498239
对代码进行微观优化,
存储值列表,反转它并使用 ,
math.fsum
用
decimal.Decimal
使用更好的系列(比如这个),
使用快速收敛到 π 值的方法,而不是一个系列(如这个),
使用 PyPy 或比 Python 更快的语言,
from math import pi
.
评论
0赞
Not Gartificial
11/30/2022
我迟到了一年,但谢谢
0赞
rickturner2001
11/4/2021
#2
您可以尝试使用生成器:
def oddnumbers():
n = 1
while True:
yield n
n += 2
def pi_series():
odds = oddnumbers()
approximation = 0
while True:
approximation += (4 / next(odds))
yield approximation
approximation -= (4 / next(odds))
yield approximation
approx_pi = pi_series()
for x in range(10000000):
print(next(approx_pi))
评论
0赞
Not Gartificial
11/30/2022
我知道这就像晚了一年,但谢谢!
评论
while loop == loop
while True
decimal