为什么numpy.power为小指数返回0而math.pow返回正确的答案?

Jis*_*hnu 53 python numpy exponentiation

In [25]: np.power(10,-100)
Out[25]: 0

In [26]: math.pow(10,-100)
Out[26]: 1e-100
Run Code Online (Sandbox Code Playgroud)

我希望这两个命令都返回1e-100.这也不是一个精确的问题,因为即使将精度提高到500之后问题仍然存在.是否有一些设置我可以更改以获得正确的答案?

And*_*ffe 71

哦,它比那更"糟糕":

In [2]: numpy.power(10,-1)   
Out[2]: 0
Run Code Online (Sandbox Code Playgroud)

但这是对正在发生的事情的暗示:10是一个整数,numpy.power并不强制数字浮点数.但这有效:

In [3]: numpy.power(10.,-1)
Out[3]: 0.10000000000000001

In [4]: numpy.power(10.,-100)
Out[4]: 1e-100
Run Code Online (Sandbox Code Playgroud)

但请注意,电源操作,**,转换为浮动:

In [5]: 10**-1
Out[5]: 0.1
Run Code Online (Sandbox Code Playgroud)


Joh*_*all 35

numpy方法假设您希望在提供整数后返回整数.

np.power(10.0,-100) 
Run Code Online (Sandbox Code Playgroud)

像你期望的那样工作.