操作 10**(-9) 在 python 中正确,但在 Cython 中错误

Operation 10**(-9) correct in python, but wrong in Cython

非常基本的问题: 在我的 python 2.7 代码中,我的情况大致如下:

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

代码在 python / spyder(64 位)中运行,但在 Cython 中失败,因为浮点除以 0。打印的数字为 0。当我定义

b=0.000000005

除法很好,打印的数字也很好。错误是什么?

我可以用 cython 0.22 重现你的错误,我认为这个错误与 cython-users 上的这个 thread 有关。

好像cython在计算10**-9的时候遇到了麻烦。如果您改用 10**-9.0,一切正常。

请注意,您可以通过将 5.0*10**(-9) 替换为 5e-9 来消除错误并美化代码片段。

尽管如此,这似乎是 cython 中的错误,而不是您的代码库中的错误。