我用C(PI计算)编写了一个非常简单的程序,结果如下:
3.1406174152499528235728265546100601568468846380710601806640625
结果看起来不像正确的PI,然后我在互联网上找到了Python代码,我运行了它,得到了这样的结果:
3.1415926535897932384626433832795028841971693993751058209749-正确的PI。在
然后我用C语言实现了Python算法,结果是这样的:
3.1406174152499528235728265546100601568468846380710601806640625
为什么来自同一个算法的Python和C的结果如此不同?如何修复C代码以获得正确的结果??在
Python代码:from decimal import*
precision = 100
getcontext().prec = 100
a = 1
b = Decimal(1) / Decimal(2).sqrt()
t = Decimal(1) / Decimal(4)
p = 1
pi = 0
for x in range(0, precision):
nextA = (a + b) / 2
nextB = (a * b).sqrt()
nextT = t - p * ((a - nextA) ** 2)
nextP = 2 * p
pi = ((a + b) ** 2) / (4 * t)
a,b,t,p = nextA,nextB,nextT,nextP
print pi
C代码:
^{pr2}$