7
나는 이상한 경우에 빠졌습니다. 나는 여기 Pyson에서 게시 한 세 가지 해결책 중 하나를 시도했다 : Increment a python floating point value by the smallest possible amount. 이 세 가지 솔루션은 모두이 부동 소수점에 착륙 할 때 이상한 동작을 표시합니다 : 1.15898324042702949299155079643242061138153076171875. 대신에 가능한 가장 작은 양만큼 b
를 증가, 그것은이 감소되고, 어떤 이유numpy.nextafter 증분 대신 감소합니다
import numpy as np
from __future__ import division
a = 1.15898324042702949299155079643242061138153076171875
b = 0
b = np.nextafter(a,1)
print a, b
:
하자 나는 다음과 같은 코드를 말한다. 왜 그럴까요?
이nextafter(x1, x2[, out])
Return the next representable floating-point value after x1 **in the direction
of x2 element-wise**.
두 번째 인수는 +/-에 의해 주어진 방향되지 않습니다 :
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