반올림 오차(Rounding Error)란?

실수를 유한한 자릿수로 나타낼 때, 표현할 수 없는 값을 가까운 값으로 반올림함으로써 생기는 오차. 0.1은 2진 부동소수점 수로는 정확히 나타낼 수 없으므로 더해 가면 오차가 쌓여, 배정밀도로 0.1을 10회 더해도 1.0이 되지 않는다. 실수를 =로 비교하는 처리나 실수로 반복 횟수를 세는 처리는 피한다.

일본어 명칭: 丸め誤差

반올림 오차(Rounding Error)은(는) 컴퓨터 산술, 프로그래밍의 기초(의사 코드 트레이스) 등 2개 분야의 연습 문제 5개에 나와요.

분야: 프로그래밍의 기초(의사 코드 트레이스)

도전해 보기: 반올림 오차(Rounding Error) 관련 문제

IEEE 754 정규화수에서 가수의 맨 앞 1을 기록하지 않는 것(숨겨진 비트)의 효과로 올바른 것은 무엇입니까?

  1. A맨 앞의 1을 생략하면 음수를 나타낼 수 있게 된다
  2. B같은 비트 수로 정밀도가 1비트 늘어난다
  3. C맨 앞의 1을 생략하면 계산 결과가 반드시 정확해진다
정답과 해설 보기

정답: B. 같은 비트 수로 정밀도가 1비트 늘어난다

2진수로 정규화하면 0이 아닌 수는 반드시 「1.xxx × 2^지수」의 형태가 되며 맨 앞은 항상 1입니다. 정해져 있는 1을 굳이 기록할 필요가 없으므로 생략하고, 그만큼의 비트를 소수부에 사용합니다. 그래서 단정밀도에서는 가수의 기록이 23비트라도 정밀도는 24비트가 됩니다. 다만 지수부가 모두 0인 비정규화수에서는 맨 앞을 0으로 간주합니다. 음수는 부호 비트로 나타내며, 반올림 오차가 없어지는 것도 아닙니다.

최근접 짝수 반올림으로 정수로 반올림할 때, 2.5와 3.5는 각각 얼마가 됩니까?

  1. A3과 4
  2. B2와 4
  3. C2와 3
정답과 해설 보기

정답: B. 2와 4

둘 다 정확히 중간인 값이므로 짝수 쪽으로 반올림합니다. 2.5는 2와 3의 중간이므로 짝수인 2로 반올림합니다. 3.5는 3과 4의 중간이므로 짝수인 4로 반올림합니다. 중간을 항상 올림하는 사사오입에서는 3과 4가 되어 합계가 원래 합계 6보다 1 큰 7이 되어 버리지만, 짝수로의 반올림에서는 2 + 4 = 6으로 합계가 유지됩니다. 2와 3은 중간을 항상 버렸을 때의 결과입니다. 반올림 오차의 치우침을 방지하는 것이 이 방식의 장점입니다.

해설 속 반올림 오차(Rounding Error)

반올림 오차(Rounding Error)이(가) 나오는 문제 (5)

  1. IEEE 754 정규화수에서 가수의 맨 앞 1을 기록하지 않는 것(숨겨진 비트)의 효과로 올바른 것은 무엇입니까?
  2. 최근접 짝수 반올림으로 정수로 반올림할 때, 2.5와 3.5는 각각 얼마가 됩니까?
  3. 거의 같은 두 부동소수점수를 뺄셈했을 때 유효한 자릿수가 크게 줄어드는 현상을 무엇이라 합니까?
  4. 소형 마이컴이나 DSP에서 부동소수점이 아니라 고정소수점 연산이 자주 사용되는 주된 이유는 무엇입니까?
  5. 실수형 값은 IEEE 754 배정밀도(binary64)로 나타내며, 덧셈 결과는 가장 가까운 표현 가능한 값으로 반올림한다. 다음 프로그램을 실행한 후의 c의 값은?

관련 용어

IEEE 754 가수(Mantissa) 지수부(Exponent) 최근접 짝수 반올림 정보 누락(Absorption) 마이컴(마이크로컨트롤러) 변수(Variable) 객체 지향(Object-oriented Programming) 나머지 연산(Modulo Operation) 단락 평가(Short-circuit Evaluation)

용어집으로 돌아가기