gpt4 book ai didi

python - Pi 使用 Python

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:45 25 4
gpt4 key购买 nike

我是 Python 初学者。我尝试用 Python 语言评估 pi。我在这里使用 Archimedes method .

我的代码是:

import math
from decimal import *
getcontext().prec = 50

pi = 0
PolySides = 6
SideLen = 1
Perim = 6
Dia = 2

while PolySides < 10000000000:
SideLen2 = Decimal(SideLen) / Decimal(2)
radius_a = Decimal(math.sqrt(1 - SideLen2**2))
radius_b = Decimal(1) - Decimal(radius_a)
SideLenNew = Decimal(math.sqrt(SideLen2**2 + radius_b**2))
PolyCircum = Decimal(PolySides * SideLen)
pi = PolyCircum / Dia
print('Polygon Sides:', PolySides, 'Pi = ', pi)
SideLen = SideLenNew
PolySides = 2 * PolySides

但出于某种原因,此代码将 pi 打印到小数点后 14 位。我不明白我在哪里失去了精度。谢谢。

最佳答案

您在 floatdecimal 之间穿梭。 math.sqrt 接受一个float 并返回一个float,因此会进行转换,将精度截断为float的。

这些改变就足够了:

while PolySides < 10000000000000000000:
SideLen2 = Decimal(SideLen) / 2
radius_a = (1 - SideLen2**2).sqrt()
radius_b = 1 - radius_a
SideLenNew = (SideLen2**2 + radius_b**2).sqrt()
PolyCircum = Decimal(PolySides * SideLen)
pi = PolyCircum / Dia
print('Polygon Sides:', PolySides, 'Pi = ', pi)
SideLen = SideLenNew
PolySides = 2 * PolySides

关于python - Pi 使用 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52076109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com