用machin-formu在python上用十进制计算pi

2024-04-16 05:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Machin公式来计算π:http://en.wikipedia.org/wiki/Machin-like_formula。 当我不使用python的decimal库来获得任意精度时(源代码:http://pastie.org/9650936),但它只给出了大约14个数字(3.141592653589794004176383168669417500495910614453125)时,它可以工作。我决定要获得任意精度,但当我为它编写代码时,它改变了pi的最终值。我真正改变的是为所有值添加Decimal(),所以我想知道是什么问题。源代码:

#!/usr/local/bin/python2.7
from decimal import *
getcontext().prec = 100
pi = Decimal(0)
ctwo = Decimal(239)
cfive = Decimal(5)
inc = Decimal(3)
a = Decimal(1)
epi = Decimal(1)/Decimal(5)
opi = Decimal(1)/Decimal(239)
for a in range(1, 10):
 if (a%2 != 0):
  epi -= Decimal(1)/Decimal((Decimal(inc)*(Decimal(cfive)**Decimal(inc))))
  opi -= Decimal(1)/Decimal((inc*(ctwo**inc)))
  inc = inc + Decimal(2)
  a = a + Decimal(1)
 elif (a%2 == 0):
  epi += Decimal(1)/Decimal((inc*(cfive**inc)))
  opi += Decimal(1)/Decimal((inc*(ctwo**inc)))
  inc = inc + Decimal(2)
  a = a + Decimal(1)
pi = Decimal(4)*Decimal((epi)-(opi))
pi = Decimal(4) * pi
print pi

我得到的值稍有偏差(3.0913837415648905010542821040108680015248075199241027019420298084548614621985888671367248358277198010) 我已经做了一些实验,但还没有找到它为什么要这样做,或者如何修复它。任何帮助都将不胜感激!谢谢!在


Tags: orghttp源代码pi精度公式incdecimal