计算圆周率到指定精度.

首先是知道圆周率的一个公式:利用这个公式进行迭代计算,4行代码就可以计算到圆周率后15位:

π = 2 + 2/3 + 2/3*2/5 + 2/3*2/5*3/7 + ...

下面是需要计算到指定的精度,同样是利用上面的公式进行计算就好了….只是需要用一个list来表示一个小数,然后实现高精度小数的加乘除……,当某一项在规定精度内都是0的时候终止循环.

import math
def compute_pi(n):
    PI = 0
    for i in range(50,0,-1):PI = 2 + PI*i/(2*i + 1)
    print(PI)
def add(a,b):# return a+b
    d = 0
    for i in range(len(a)-1,-1,-1):
        c = a[i]+b[i]+d
        a[i],d = c%10,c//10
    return a
def mul(a,b):#return a*b
    d = 0
    for i in range(len(a)-1,-1,-1):
        c = a[i]*b+d
        d,a[i] = c//10,c%10
    return a

def div(a,b):
    d = 0
    for i in range(0,len(a)):
        c = a[i]+ d*10
        d,a[i] = c%b,c//b
    return a
def Do_PI(n):
    a,b = 1,3
    z  =  [2]+[0]*(n-1)
    PI = [2]+[0]*(n-1)
    while(z!=[0]*n):
        z  =  mul(z,a)#z = z*a
        z  =  div(z,b)#z = z/b
        PI =  add(PI,z)#PI = PI+z
        a,b = a+1,b+2
    print(PI[:-3])
def My_PI(n):Do_PI(n+4)
My_PI(1000)

你可能感兴趣的:(笔试面试)