jac*_*acg 3 python floating-point numpy
考虑以下调用 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
Run Code Online (Sandbox Code Playgroud)
我希望第二个参数为正的所有情况都返回一个大于第一个参数的值;并且只要第二个参数小于零,结果就会小于第一个参数。
表现出的行为不符合我的期望,特别是:
这是错误还是功能?
这些示例是在 Python 3.6.1 上使用 Numpy 1.13.1 生成的
您误解了第二个参数的含义。根据docs,该功能确实(强调我的)
将 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
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           783 次  |  
        
|   最近记录:  |