Tôi đã triển khai loạt Madhava – Leibniz để tính pi trong Python, và sau đó trong Cython để cải thiện tốc độ. Phiên bản Python:Tính toán của Cython là không chính xác
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)
phiên bản 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)
Khi tôi dừng lại phiên bản Python nó đã tính toán một cách chính xác pi để 3.141592. Phiên bản Cython cuối cùng đã kết thúc tại 3.141597 với một số chữ số hơn mà tôi không nhớ (thiết bị đầu cuối của tôi bị rơi) nhưng không chính xác. Tại sao tính toán của phiên bản Cython không chính xác?