python如何计算π

Python015

python如何计算π,第1张

#coding=utf-8

'''

Created on 2014-11-04

@author: Neo

'''

import sys

import math

from decimal import *

  

def bbp(n):

    pi=Decimal(0)

    k=0

    while k < n:

        pi+=(Decimal(1)/(16**k))*((Decimal(4)/(8*k+1))-(Decimal(2)/(8*k+4))-(Decimal(1)/(8*k+5))-(Decimal(1)/(8*k+6)))

        k+=1

    return pi

  

def main(argv):

    if len(argv) !=2:

        exit('Usage: BaileyBorweinPlouffe.py <prec> <n>')

          

    getcontext().prec=(int(sys.argv[1]))

    my_pi=bbp(int(sys.argv[2]))

    accuracy=100*(Decimal(math.pi)-my_pi)/my_pi

  

    print "Pi is approximately "+str(my_pi)

    print "Accuracy with math.pi: "+str(accuracy)

      

if __name__=="__main__":

    main(sys.argv[1:])

result:

d:\workspace\PyDemo>python test.py 10 10

Pi is approximately 3.141592653

Accuracy with math.pi: 1.877369797E-8

d:\workspace\PyDemo>python test.py 25 25

Pi is approximately 3.141592653589793238462644

Accuracy with math.pi: -3.898171852150198570978563E-15

d:\workspace\PyDemo>python test.py 40 40

Pi is approximately 3.141592653589793238462643383279502884195

Accuracy with math.pi: -3.898171832519375446564294863483061824361E-15

d:\workspace\PyDemo>

def pisum(n):

    pi=3

    sign=1

    for i in range(1,n+1):

        pi+=sign*4.0/((i+1)*(i+2)*(i+3))

        sign=-sign

    return pi

def piprod(n):

    start=2**0.5

    pi=1

    for i in range(0,n+1):

        for j in range(0,i):

            start=(start+2)**0.5    

        pi*=start

    pi=2**(n+2)/pi

    return pi

python表示圆周率的方法:

使用“import”语句导入math包。“math.pi”函数可以获取到圆周率,那么就可以用“math.pi”函数来表示圆周率

示例如下:

执行结果如下:

更多Python知识,请关注:Python自学网!!