可計算小數點后任意位的圓周率(理論,具體看電腦性能,時間計算可能不太准確)
# -*- coding: utf-8 -*- from __future__ import division ####################導入時間模塊 import time ###############計算當前時間 time1=time.time() ################算法根據馬青公式計算圓周率#################### number = int(input('請輸入想要計算到小數點后的位數n:')) # 多計算10位,防止尾數取舍的影響 number1 = number+10 # 算到小數點后number1位 b = 10**number1 # 求含4/5的首項 x1 = b*4//5 # 求含1/239的首項 x2 = b// -239 # 求第一大項 he = x1+x2 #設置下面循環的終點,即共計算n項 number *= 2 #循環初值=3,末值2n,步長=2 for i in range(3,number,2): # 求每個含1/5的項及符號 x1 //= -25 # 求每個含1/239的項及符號 x2 //= -57121 # 求兩項之和 x = (x1+x2) // i # 求總和 he += x # 求出π pai = he*4 #舍掉后十位 pai //= 10**10 ############ 輸出圓周率π的值 paistring=str(pai) result=paistring[0]+str('.')+paistring[1:len(paistring)] print (result) time2=time.time() print (u'總共耗時:' + str(time2 - time1) + 's')
僅供學習參考