본문 바로가기

IT

파이썬 반올림 짝수 우선 말고 사사오입 - IEEE 754


파이썬에서는 내장 함수인 round() 함수를 사용하여 반올림할 수 있습니다. 

round(숫자, 자릿수) 이렇게 사용하시면 됩니다.
자릿수를 생략하면 0으로 취급됩니다.

만약에 자릿수가 음수이면(마이너스이면) 정수 자릿수를 기준으로 반올림 합니다.

예시 1 소수점 이하 2자리에서 반올림
X = 3.141592
print( round(x,2) ) 
결과값은 3.14가 나옵니다.

문제는 사사오입 입니다.

round(4.5)를 하면 우리의 상식에서는 5가 나와야 합니다.
하지만 파이썬에서는 4가 나옵니다.

"반올림 방식" 또는 "반올림 규칙"이라고 불리는데 참 독특합니다.
이는 4.5에서 가장 가까운 짝수의 정수가 4이기 때문에 4가 나온다고 합니다.

round(5.5)를 호출하면 6이 반환됩니다. 이는 5.5에서 가장 가까운 짝수의 정수가 6이기 때문입니다.

이러한 규칙은 IEEE 754 부동소수점 표준에서 규정된 반올림 규칙이라고 하네요

IEEE 754는 부동소수점 연산을 정의하기 위한 표준입니다.
이 표준은 실수를 이진 부동소수점 수로 나타내는 방법을 정의하고, 부동소수점 수를 저장하고 계산하는 방법을 규정합니다.
IEEE 754는 32비트와 64비트의 두 가지 형식으로 나뉘어져 있습니다.
단정밀도는 32비트로 표현되며, 부호 비트, 지수 비트, 가수 비트로 구성됩니다.
배정밀도는 64비트로 표현되며, 부호 비트, 지수 비트, 가수 비트로 구성됩니다.

IEEE 754 부동소수점 표준에서는 반올림 방식 중에서도 "가장 가까운 짝수" 방식을 사용합니다.

변환하려는 수의 가장 마지막 자리 숫자가 5라면, 그 앞자리 숫자가 짝수이면 버림하고, 홀수이면 올림한다.
예를 들어, 2.5를 반올림하는 경우에는 2는 짝수이므로 2로 내림하고, 3.5를 반올림하는 경우에는 3은 홀수이므로 4로 올림한다.

이 방식은 통계학이나 자료분석 분야에서 자주 사용되는 방식이라고 합니다.
특히 대규모 데이터를 다룰 때 전체적으로 오차를 줄이는 효과가 있다고 하네요

 

그렇다면 우리가 학교다니면서 배운 사사오입을 하려면 어떻게 해야 할까요?

간단합니다.
양수라면 0.5를 더해준 뒤 ROUND를 씌우면 되고
음수라면 0.5를 빼준 뒤 ROUND를 씌우면 됩니다.

끝.

반응형