mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-11-25 16:08:03

반올림(수학)



파일:상위 문서 아이콘.svg   상위 문서: 어림
1. 개요2. 처리 방법3. 사용 분야4. 관련 문서

1. 개요

반올림/Round-off/사사오입/
[math(f(x; n) = \begin{cases} \begin{aligned} \mathrm{sgn}\left(x\right) 10^{-n}\lceil 10^{n} |x| \rceil && \textsf{ if } 10^n |x| - \lfloor 10^n |x| \rfloor \geq \dfrac{1}{2} \\ \mathrm{sgn}\left(x\right)10^{-n} \lfloor 10^{n} |x| \rfloor && \textsf{ if } 10^n |x| - \lfloor 10^n |x| \rfloor < \dfrac{1}{2} \end{aligned} \end{cases})]
흔히 생각하는 사사오입을 수식으로 표현한 것.[1][2]

근삿값( 어림수)을 구할 때에 끝수를 처리하는 방법으로, 수학적으로 말하자면 최소 단위로 나눈 나머지가 최소 단위의 절반에 미치지 못하는 경우 버리고, 초과하는 경우는 올리는 방법이다.

보통 [math(\lceil x \rceil)]은 천장함수(올림, ceiling function), [math(\lfloor x \rfloor)]은 바닥함수(버림 또는 내림, floor function)으로 적으나, 반올림은 특별한 수학 기호가 없다.

2. 처리 방법

사회과학에서는 주로 소수점 둘째자리를 최소 단위로 하여 반올림한다. 정확히 절반에 걸리는 경우에는 처리 방법에 따라 다르며, '절반의 걸리는 범위'에 대한 정의에 따라 그 결과가 달라지기도 한다. 대표적으로 아래의 유형이 있다. 예시는 모두 십진법을 전제로 한다.
사사오입 [math(\begin{aligned} {\rm round}(x;\,n) &= 10^{-n} \left\lceil \dfrac12\lfloor2\times10^n x\rfloor \right\rceil \\ {\rm round_2}(x;\,n) &= 10^{-n} \left\lfloor \dfrac12\lceil2\times10^n x\rceil \right\rfloor \end{aligned})]
오사육입

100을 최소 단위, 10을 밑단위로 잡은 예시를 들면 아래와 같다.
반올림 방법 밑자리 960~1049 1050 1051~1059 1060~1149 1150 1151~1159 1160~1249
사사오입 절사 1000 1100 1200
오사오입 고려 1000 1100 1200
사사육입 고려 1000 1100 1200
오사육입 절사 1000 1100 1200

3. 사용 분야

[math(\pi)]나 [math(\sqrt2)] 같은 무한소수를 반올림하거나, 1기압(1013.25 hPa)을 1013 hPa로 나타내듯이 복잡한 수치를 간단히 하기 위해 쓴다.

과학에선 반올림을 할때 유효숫자를 나타내기 위해 지수형태인 a×10n 꼴로 나타내는 경우가 많다. 예를 들어 3004 를 백의자리에서 반올림하면 3000 이 되고, 유효숫자는 3 하나 뿐인데 이를 표현하면 3×103 이된다. 하지만, 3004 를 십의자리에서 반올림하면 역시 3000 이 되지만, 유효숫자는 30 까지이다. 이를 지수형태로 표현하면 3.0×103 라고 표현해서 유효숫자가 2개임을 표시할 수 있다. 만약 일의자리에서 반올림 했다면 3.00×103 으로 표기한다.

수치해석이나 디지털 신호처리 같은 컴퓨터를 이용한 연산에서는 아날로그-디지털 변환이나 컴퓨터 저장용량의 한계로 인해 값을 저장할 때 반올림을 해야 한다. 이때 발생하는 오차를 반올림 오차라고 하는데 이것이 누적되면 잘못된 결과가 출력될 수도 있어서 컴퓨터를 통해 연산을 할 때에는 반올림 오차에 대해 고려해야 할 필요가 있다. 디지털 신호처리에서는 이를 양자화 오차 또는 양자화 노이즈라고 부르기도 한다.

돈 계산에 있어서 어림계산을 해야 한다면 나의 지출은 올림, 나의 수입은 버림으로 계산하는 것이 좋다. 그렇게 계산해야 나중에 뒤탈이 없다. 단 몇백 원 차이로 헝클어지는 경우가 수도 없이 많다.

Microsoft Excel에선 반올림 하는 함수로는 ROUND가 있다.[5] Excel에서의 ROUND 함수는 사사오입식 반올림으로 오사오입식 반올림을 원할 때에는
=IF(AND(ISEVEN(A1*10^0),MOD(ABS(A1)*10^0,1)<=0.5),ROUNDDOWN(A1,0),ROUND(A1,0))
이 식을 붙여넣고 0을 원하는 숫자로 바꾸면 된다. 또는 사용자정의 함수로
{{{Function BankerRound(rng As Double, sig As Integer) As Double
BankerRound = Round(rng, sig)
End Function}}}
이렇게 붙여넣고
=BankerRound(A1,0)
이렇게 함수를 쓰면 된다.

Python에서는 Microsoft Excel처럼 round 함수로 반올림을 할 수 있다. 다만, Python2에서는 사사오입법을, Python3에서는 오사오입법을 쓴다는 게 특징.
#!syntax python
print("round() function:")
for x in range(1, 11):
    xx = x + .5
    print("%4.1f to: %2d" % (xx, round(xx) ) )

이 코드는 아래와 같이 실행된다.
Python2 Python3
round() function:
 1.5 to:  2
 2.5 to:  3
 3.5 to:  4
 4.5 to:  5
 5.5 to:  6
 6.5 to:  7
 7.5 to:  8
 8.5 to:  9
 9.5 to: 10
10.5 to: 11
round() function:
 1.5 to:  2
 2.5 to:  2
 3.5 to:  4
 4.5 to:  4
 5.5 to:  6
 6.5 to:  6
 7.5 to:  8
 8.5 to:  8
 9.5 to: 10
10.5 to: 10

4. 관련 문서



[1] 절댓값 부호 함수가 들어가는 이유는 이를 쓰지 않을 경우 음수에서는 반대의 결과가 나오기 때문이다. [2] 위의 식을 조각적 정의를 쓰지 않고 쓴다면 [math({\rm round}(x;\,n) = 10^{-n} \left\lceil \dfrac{1}{2}\lfloor2×10^n x\rfloor \right\rceil)]로 나타낼 수 있다. [3] 해당 자리가 0이면 버림을 해도 결과는 같다. [4] 포병 계산 등의 분야에서는 사사육입이라 부른다. [5] 같은 관계로 ROUNDUP은 올림, ROUNDDOWN은 내림(버림)하는 함수이다. [6] 말 그대로 자유당은 반올림 이라는 기적의 논리로 헌법 개정안을 통과시켰다. 참고로 그 때 당시에는 사사오입이 반올림이다.

파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r200
, 1번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r200 ( 이전 역사)
문서의 r ( 이전 역사)