{{위키데이터 속성 추적}}
{{다른 뜻}}
{{다른 뜻 넘어옴|사사오입|대한민국의 제2차 헌법 개헌|사사오입 개헌}}
[[파일:Comparison rounding graphs SMIL.svg|섬네일]]
'''반올림'''(半-)은 [[근삿값]]을 구하는 방법 중 하나이다.

== 정의 ==
특정 [[기수법]]에서 절반 미만이면 0으로 버려준다. 절반 이상이면 0으로 버려주고 윗자리에 1을 더한다.

== 종류 ==
=== 사사오입 ===
사사오입(四捨五入)

십진법에서는 다음과 같이 반올림을 한다.
# 반올림 할 자리를 구한다.
4 이하이면 0으로 버리고 5 이상이면 0으로 버린 후 윗자리에 1을 더한다.

==== 사사오입의 예 ====
* 73
** 일의 자리에서 반올림: 70
** 십의 자리에서 반올림: 100
* 51.6137
** 소수점 넷째 자리에서 반올림: 51.614
** 소수점 셋째 자리에서 반올림: 51.61
** 소수점 둘째 자리에서 반올림: 51.6
** 소수점 첫째 자리에서 반올림: 52
** 일의 자리에서 반올림: 50
** 십의 자리에서 반올림: 100

=== 오사오입 ===
반올림에서 5 [[미만]]의 숫자는 [[버림]]하며 5 [[초과]]의 숫자는 [[바닥_함수와_천장_함수#내림·올림|올림]]한다. 5의 경우에는 5의 앞자리가 홀수인 경우엔 올림을 하고 짝수인 경우엔 버림을 하여 짝수로 만들어준다. 예를 들어 53.45는 53.4로, 32.75는 32.8로 반올림한다. 이를 [[오사오입]](round-to-nearest-even)이라고 한다. [[자연과학]] 및 [[공학]]의 [[유효 숫자]]에서 많이 쓴다.

=== 오사육입 ===
사사오입과는 반대로 5를 버리는 방법이다. 5 초과 올림, 5 미만 내림은 동일하다.

=== 정리표 ===
1000부터 1200까지의 정수를 100의 자리까지 어림하는 방법에 따라 다음 표와 같이 어림할 수 있다.

{| class="wikitable" style="text-align:center; word-break:keep-all; white-space:nowrap"
! 100의 자리까지 어림 !! 1000 !! 1001&nbsp;-&nbsp;1049 !! 1050 !! 1051&nbsp;-&nbsp;1059 !! 1060&nbsp;-&nbsp;1099 !! 1100 !! 1101&nbsp;-&nbsp;1149 !! 1150 !! 1151&nbsp;-&nbsp;1159 !! 1160&nbsp;-&nbsp;1199 !! 1200
|-
| 올림 || colspan="1" style="background:#FFCC99" | 1000 || colspan="5" style="background:#99FF99" | 1100 || colspan="5" style="background:#99CCFF" | 1200 
|-
| 버림 || colspan="5" style="background:#FFCC99" | 1000 || colspan="5" style="background:#99FF99" | 1100 || colspan="1" style="background:#99CCFF" | 1200
|-
| 사사오입<sub>(일반적인 반올림)</sub> || colspan="2" style="background:#FFCC99" | 1000 || colspan="5" style="background:#99FF99" | 1100 || colspan="4" style="background:#99CCFF" | 1200
|-
| 오사오입<sub>(더 정확한 반올림)</sub> || colspan="3" style="background:#FFCC99" | 1000 || colspan="4" style="background:#99FF99" | 1100 || colspan="4" style="background:#99CCFF" | 1200
|-
| 오사육입<sub>(매우 드묾)</sub> || colspan="4" style="background:#FFCC99" | 1000 || colspan="5" style="background:#99FF99" | 1100 || colspan="2" style="background:#99CCFF" | 1200
|}

== 반올림의 상대오차 ==
실수 x를 [[부동소수점]] 기계 숫자로 나타낸 것을 fl(x)라고 할 때, 반올림 오차를 구하는 과정은 다음과 같다. 우선 십진수 양의 실수 x는 [[부동소수점#형태|정규화]]된 형태로 다음으로 나타낼 수 있다.
:<math>x = (0.b_1 b_2 \cdots b_k b_{k+1} \cdots)_{10} \times 10^e</math>
<math>b_{k+1} \geq 5</math>인 경우 b<sub>k</sub>에 1을 더해주어 반올림을 하게 되고, <math>b_{k+1} < 5</math>인 경우 b<sub>k</sub>이후 모든 숫자들을 [[절단 (수치해석)|절단]]한다. k자리로 반올림하는 경우의 [[관측값#상대오차|상대오차]]를 구한다면 상대오차가 최대가 되는 값을 찾아야 한다. 이때 b<sub>k+1</sub>이 5 이상인지 미만인지에 따라 두 가지로 나눈다. <math>b_{k+1} < 5</math>인 경우
:<math>\begin{align} \left| \frac{x-fl(x)}{x} \right| & = \left| \frac{(0.b_1 b_2 \cdots b_k b_{k+1} \cdots) \times 10^n - (0.b_1 b_2 \cdots b_k) \times 10^n}{(0.b_1 b_2 \cdots b_k b_{k+1} \cdots) \times 10^n} \right| \\
                                               & = \left| \frac{(0.b_{k+1} b_{k+2} b_{k+3} \cdots) \times 10^{n-k}}{(0.b_1 b_2 \cdots b_k b_{k+1} \cdots) \times 10^n} \right| \\
                                               & = \left| \frac{0.499999\cdots}{0.1} \times 10^{-k} \right| \\
                                               & = \frac{0.5}{0.1} \times 10^{-k} \\
                                               & = 0.5 \times 10^{-k+1} \end{align}</math>
<math>b_{k+1} \geq 5</math>인 경우는 <math>b_{k+1} < 5</math>인 경우보다 상대오차가 작다. 따라서 반올림의 상대오차는
<math> \left| \frac{x-fl(x)}{x} \right| \leq 0.5 \times 10^{-k+1}</math>이다.{{Sfn|Abdelwahab Kharab|Ronald B. Guenther|p=28|2013}}

== 같이 보기 ==
* [[바닥 함수와 천장 함수]]
* [[버림]]
* [[−0]]

== 각주 ==
{{각주}}

== 참고 문헌 ==
* {{서적 인용|저자1=Abdelwahab Kharab|저자2=Ronald B. Guenther|제목=An Introduction to Numerical Methods A MATLAB Approach|번역제목=이공학도를 위한 수치해석|날짜=2013|출판사=학산미디어|isbn=978-89-966211-8-8 |ref=harv}}

{{전거 통제}}

[[분류:산술]]