Why does numpy.power return 0 for small exponents while math.pow returns the correct answer?

后端 未结 3 863
感动是毒
感动是毒 2021-01-17 09:21
In [25]: np.power(10,-100)
Out[25]: 0

In [26]: math.pow(10,-100)
Out[26]: 1e-100

I would expect both the commands to return 1e-100. This is not a

3条回答
  •  说谎
    说谎 (楼主)
    2021-01-17 09:48

    Oh, it's much "worse" than that:

    In [2]: numpy.power(10,-1)   
    Out[2]: 0
    

    But this is a hint to what's going on: 10 is an integer, and numpy.power doesn't coerce the numbers to floats. But this works:

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

    Note, however, that the power operator, **, does convert to float:

    In [5]: 10**-1
    Out[5]: 0.1
    

提交回复
热议问题