Python 如何理解numpy.nextafter的结果
考虑以下对Python 如何理解numpy.nextafter的结果,python,numpy,floating-point,Python,Numpy,Floating Point,考虑以下对numpy.nextafter的调用 >>> from numpy import nextafter >>> nextafter( 0.1, -1) 0.099999999999999992 >>> nextafter( 0.1, +1) 0.10000000000000002 >>> nextafter( 1 , -1) 0.99999999999999989 >>> nextafter( 1
numpy.nextafter的调用
>>> from numpy import nextafter
>>> nextafter( 0.1, -1)
0.099999999999999992
>>> nextafter( 0.1, +1)
0.10000000000000002
>>> nextafter( 1 , -1)
0.99999999999999989
>>> nextafter( 1 , +1)
1.0
>>> nextafter(10 , -1)
9.9999999999999982
>>> nextafter(10 , +1)
9.9999999999999982
我希望所有第二个参数为正的情况下,返回的值都大于第一个参数;只要第二个参数小于零,结果就会小于第一个参数
所展示的行为并未满足我的期望,具体而言:
nextafter(1,+1)根本不改变第一个输入,而不是增加它
nextafter(10,+1)减少第一个输入,而不是增加它
这是一个bug还是一个特性
这些示例是使用Python 3.6.1上的Numpy 1.13.1生成的,您误解了第二个参数的含义。根据,该函数不存在(强调我的)
返回x1之后的下一个浮点值到x2,按元素顺序
因此,nextafter(1,+1)
不会改变任何东西,因为您正试图从1.0过渡到1.0nextafter(10,+1)
减少输入,因为这是从10.0到1.0的方法
如果你总是想增加/减少,你可以走向+/-无穷大:
import numpy as np
nextafter( 0.1, -np.inf) # 0.099999999999999992
nextafter( 0.1, +np.inf) # 0.10000000000000002
nextafter( 1 , -np.inf) # 0.99999999999999989
nextafter( 1 , +np.inf) # 1.0000000000000002
nextafter(10 , -np.inf) # 9.9999999999999982
nextafter(10 , +np.inf) # 10.000000000000002
非常感谢你!文档应该以+inf和-inf作为例子来说明这一点,然后可能会澄清“寻找下一个x1代表值的方向”。我在这里真的没有想法,因为即使是大数字2、5或100也不会有什么不同。所以我认为这只是一个标志。