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.0
    nextafter(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也不会有什么不同。所以我认为这只是一个标志。