Python实战之计算圆周率PI
上一节
下一节
参考资料:
案例7:Python实战 之 计算圆周率PI
莱布尼茨公式:
Nilakantha公式:
Machin公式:
----------------------------------莱布尼茨公式------------------------------------
------------------------------------源代码----------------------------------------
n = 100000
s = 0
for i in range(1,n+1):
a = (-1)**(i+1)*(1 / (2*i - 1))
s += a
pi = 4 * s
print(pi)
---------------------------------Nilakantha公式-----------------------------------
------------------------------------源代码----------------------------------------
n = 10000
s = 0
for i in range(1,n):
a = (-1)**(i+1)*(4 / (2*i*(2*i+1)*(2*i+2)))
s += a
pi = 3 + s
print(pi)
----------------------------------Machin公式--------------------------------------
------------------------------------源代码----------------------------------------
number = 10 # 指定计算小数点位数
number1 = number + 10 # 多计算十位,防止尾数取舍出现的影响
b = 10 ** number1 # 定义计算小数点的位数
x1 = b * 4 // 5 # 求首项的小数
x2 = b * 1 // -239
he = x1 + x2 # 求首项的和
number = 2 * number # 循环终止条件
for i in range(3,number,2):
x1 //= -25
x2 //= (-239*239)
x = (x1+x2) // i
he += x
pai = he * 4
pai //= 10**10 # 去掉多计算的十位
str_pai = str(pai)
result = str_pai[0] + '.' + str_pai[1:len(str_pai)]
print(result)

