我在Python中实现了Madhava-Leibniz级数来计算pi,然后使用Cython进行优化以提高速度。Python版本:
from __future__ import division
pi = 0
l = 1
x = True
while True:
if x:
pi += 4/l
else:
pi -= 4/l
x = not x
l += 2
print str(pi)
Cython 版本:
cdef float pi = 0.0
cdef float l = 1.0
cdef unsigned short x = True
while True:
if x:
pi += 4.0/l
else:
pi -= 4.0/l
x = not x
l += 2
print str(pi)
当我停止Python版本时,它已正确计算出圆周率为3.141592。Cython版本最终达到了3.141597,还有一些我不记得的更多数字(我的终端崩溃了),但是这些数字是不正确的。为什么Cython版本的计算结果是错误的?