9.25에 diff보다 작은 값을 더하면 어떤 일이 일어날까요?
>>> a
9.25
>>> half_diff = diff/2 #1
>>> half_diff
8.881784197001252e-16 #2
>>> c = a + half_diff #3
>>> a = = c #4
True
half_diff는 diff 값의 반절입니다(#1). half_diff 역시 실수를 나눠서 얻은 값이니 실수입니다(#2). a와 half_diff를 더해 c에 대입합니다(#3). 실수와 실수를 더했으므로 c는 반드시 a보다 커야 합니다. 그런데 a 값과 c 값이 같다고 나옵니다(#4). 어떻게 된 일일까요?
a 값과 c 값이 같은 이유는 c에 더한 half_diff 값이 diff보다 작기 때문입니다. diff는 9.25와 그다음 표현 가능한 수 사이의 차이이므로 9.25에 diff보다 작은 값을 더한 수를 부동소수점 방식에서는 표현할 수 없습니다. 달리 표현하면 정밀도가 떨어진다는 말입니다.