2015-05-13 7 views
6

Bardzo proste pytanie: w moim kodu python 2.7 mam sytuację z grubsza następująco:Operation 10 ** (- 9) poprawny w Pythonie, ale źle w Cython

b=5.0*10**(-9) 
a=9 
print(a) 
c=a/(1.0*b) 

uruchamia kod w python/spyder (64-bitowy), ale nie w Cython, ze względu na podział płyną 0. nadrukowany numer oznacza 0. Gdy określenie

b=0.000000005 

podział jest w porządku, a wydrukowana numer też. Jaki jest błąd?

Odpowiedz

5

Mogę odtworzyć błąd z cython 0.22 i myślę, że ten błąd jest związany z tym thread na cython-users.

Wygląda na to, że cython wpada w kłopoty podczas obliczania 10**-9. Jeśli zamiast tego używasz 10**-9.0, wszystko działa poprawnie.

Pamiętaj, że możesz pozbyć się błędu i ulepszyć fragment kodu, zastępując 5.0*10**(-9) przez 5e-9.

Mimo to wydaje się, że jest to błąd w cython, a nie w bazie kodu.

Powiązane problemy