Python numpy.nextafter递减而不是递增
我碰到了一个奇怪的案子。我尝试了Pyson发布的三种解决方案之一:。当我在这个浮点上着陆时,这三种解决方案都显示出一种奇怪的行为:1.15898324042702949299155079643242061138153076171875 假设我有以下代码:Python numpy.nextafter递减而不是递增,python,numpy,posix,c99,Python,Numpy,Posix,C99,我碰到了一个奇怪的案子。我尝试了Pyson发布的三种解决方案之一:。当我在这个浮点上着陆时,这三种解决方案都显示出一种奇怪的行为:1.15898324042702949299155079643242061138153076171875 假设我有以下代码: import numpy as np from __future__ import division a = 1.15898324042702949299155079643242061138153076171875 b = 0 b = np.
import numpy as np
from __future__ import division
a = 1.15898324042702949299155079643242061138153076171875
b = 0
b = np.nextafter(a,1)
print a, b
出于某种原因,它不是以尽可能小的量递增b
,而是递减。
为什么呢
以下是我在游戏中得到的一些快速结果:
In [12]: a = 1.15898324042702949299155079643242061138153076171875
In [13]: a
Out[13]: 1.1589832404270295
In [14]: numpy.nextafter(a,1)
Out[14]: 1.1589832404270293
In [15]: numpy.nextafter(a,-1)
Out[15]: 1.1589832404270293
从文档(我的重点):
第二个参数不是+/-1给出的方向,而是要瞄准的值
In [12]: a = 1.15898324042702949299155079643242061138153076171875
In [13]: a
Out[13]: 1.1589832404270295
In [14]: numpy.nextafter(a, 0)
Out[14]: 1.1589832404270293
In [15]: numpy.nextafter(a, 1)
Out[15]: 1.1589832404270293
In [16]: numpy.nextafter(a, 1.16)
Out[16]: 1.1589832404270297
In [17]: numpy.nextafter(a, 2)
Out[17]: 1.1589832404270297
In [12]: a = 1.15898324042702949299155079643242061138153076171875
In [13]: a
Out[13]: 1.1589832404270295
In [14]: numpy.nextafter(a, 0)
Out[14]: 1.1589832404270293
In [15]: numpy.nextafter(a, 1)
Out[15]: 1.1589832404270293
In [16]: numpy.nextafter(a, 1.16)
Out[16]: 1.1589832404270297
In [17]: numpy.nextafter(a, 2)
Out[17]: 1.1589832404270297