더북(TheBook)

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_diffdiff 값의 반절입니다(#1). half_diff 역시 실수를 나눠서 얻은 값이니 실수입니다(#2). ahalf_diff를 더해 c에 대입합니다(#3). 실수와 실수를 더했으므로 c는 반드시 a보다 커야 합니다. 그런데 a 값과 c 값이 같다고 나옵니다(#4). 어떻게 된 일일까요?

a 값과 c 값이 같은 이유는 c에 더한 half_diff 값이 diff보다 작기 때문입니다. diff는 9.25와 그다음 표현 가능한 수 사이의 차이이므로 9.25에 diff보다 작은 값을 더한 수를 부동소수점 방식에서는 표현할 수 없습니다. 달리 표현하면 정밀도가 떨어진다는 말입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.