私は奇妙なケースに落ちました。Pyson からここに投稿された 3 つのソリューションのいずれかを試しました。この浮動小数点 1.15898324042702949299155079643242061138153076171875 に着地すると、3 つのソリューションはすべて奇妙な動作を示します。
次のコードがあるとしましょう:
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