我实现了 Madhava-Leibniz 系列在 Python 中计算 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 版本时,它已将 pi 正确计算为 3.141592。Cython 版本最终以 3.141597 结束,还有一些我不记得的数字(我的终端崩溃了)但不正确。为什么 Cython 版本的计算不正确?