pyuthon计算圆周率(无聊写的,写的玩玩)
环境如下
编译器:PyCharm
python解释器:COnda
工具环境:Conda
python版本:3.10

事情是这样的本来准备写计算圆周率的python代码玩玩,然后发现输出的结果不对
代码如下
from decimal import Decimal, getcontext
import signal
def signal_handler(signum, frame):
print('You pressed Ctrl+C!')
exit(0)
def compute_pi():
# 设置上下文精度
getcontext().prec = 1000
# 初始化参数
a = Decimal(1.0)
b = Decimal(1.0) / Decimal(2).sqrt()
t = Decimal(1.0) / Decimal(4.0)
p = Decimal(1.0)
# 安装信号处理函数
signal.signal(signal.SIGINT, signal_handler)
# 循环计算
for i in range(10000000000000):
a_next = (a + b) / Decimal(2.0)
b_next = (a * b).sqrt()
t_next = t - p*(a - a_next)**2
pi_next = (a_next + b_next)**2 / (Decimal(4.0) * t_next)
# 将每一位的计算结果输出
for digit in str(pi_next):
if digit != '.':
print(digit, end='')
a = a_next
b = b_next
t = t_next
p = pi_next
print("\nFinished computing pi!")
# 执行圆周率计算
compute_pi()
输出结果
3140579250522168248311331268975823311773440237512948335643486693345582758034902907827287621552766900546005422146813923926603..............
正确输出结果应该:3. 1415926535 8979323846 2643383279 5028841971 6939937510
5820974944 5923078164 0628620899 8628034825 3421170679
唯一作用就是:满屏幕在动的随机数字
感觉挺好玩的,因为计算计算速度比较快,不会太有人,会核对结果是否正确,装逼应该还是可以的
注意:本程序可以跑,但是输出结果不正确

以下是正确的计算圆周率的python代码
import math
def compute_pi():
return math.pi
pi = compute_pi()
print(pi)
输出结果:3.141592653589793

如果你感觉位数不够的用以下代码
import decimal
def pi_to_n_decimal_places(n):
decimal.getcontext().prec = n + 1
pi = decimal.Decimal(0)
k = 0
while True:
term = 1 / decimal.Decimal(16)**k * (
decimal.Decimal(4)/(8*k+1) -
decimal.Decimal(2)/(8*k+4) -
decimal.Decimal(1)/(8*k+5) -
decimal.Decimal(1)/(8*k+6))
if abs(term) < decimal.Decimal("1e-{}".format(n)):
break
pi += term
k += 1
return pi
pi = pi_to_n_decimal_places(100)
//pi = pi_to_n_decimal_places(这改成你想让电脑计算多少位数)
print(pi)
输出结果:3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170678
注意:数太大,电脑会卡死

运行环境已经提供,想玩的可以配置相同的环境,玩玩,加粗的代码