我遇到了一个奇怪的案子。我尝试了 Pyson 在此处发布的三种解决方案中的任何一种:Increment a python floating point value by the minimum possible amount。当我落在这个浮点上时,所有三种解决方案都显示出一种奇怪的行为:1.15898324042702949299155079643242061138153076171875。
假设我有以下代码:
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