컴퓨터 산술
많은 프로그래밍 언어에서 배정밀도의 0.1 + 0.2 == 0.3이라는 비교가 거짓이 되는 이유로 올바른 것은 무엇입니까?
- A덧셈 명령이 소수의 덧셈을 올바르게 수행하지 못하는 경우가 있기 때문에
- B0.3은 부동소수점수로 나타낼 수 없는 특별한 값이라 비교가 항상 거짓이 되기 때문에
- C모두 반올림한 가까운 값으로 표현되어 오차로 인해 값이 미세하게 다르기 때문에
정답과 해설 보기
정답: C. 모두 반올림한 가까운 값으로 표현되어 오차로 인해 값이 미세하게 다르기 때문에
0.1, 0.2, 0.3은 모두 2진수로 정확히 나타낼 수 없어, 각각 가장 가까운 값으로 반올림되어 기록됩니다. 0.1과 0.2의 근삿값을 더해 반올림한 결과는 0.30000000000000004가 되어, 0.3의 근삿값 0.29999999999999998…과 마지막 자리에서 일치하지 않습니다. 그래서 부동소수점수의 비교는 차의 절댓값이 작은 허용값 이하인지로 판정하는 것이 일반적입니다. 덧셈 명령은 규격대로 올바르게 반올림하고 있으며, 0.3도 근삿값으로 나타낼 수 있습니다.