用machin公式在python上计算带小数的pi

时间:2014-10-15 20:33:47

标签: python decimal pi

我正在尝试使用Machin公式计算pi:http://en.wikipedia.org/wiki/Machin-like_formula。 它适用于我不使用python的十进制库来获得任意精度(源代码:http://pastie.org/9650936)但它只给出了14位数(3.14159265358979400417638316866941750049591064453125)。我决定要获得任意精度,但是当我为此编写代码时,它改变了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.091383741564895010542821040108680015248075199241027019420298084548814621985888671367248358277198010) 我已经做了一些实验,并且无法找到它为什么这样做或如何解决它。任何帮助,将不胜感激!谢谢!

0 个答案:

没有答案