프로그래밍 PROGRAMMING/파이썬 PYTHON

[PYTHON] 파이썬 반올림, 올림, 내림 정복하기: round()의 함정과 math 모듈

매운할라피뇽 2026. 1. 21. 09:14
반응형

파이썬 반올림, 올림, 내림 정복하기: round()의 함정과 math 모듈

 

1. 개요

데이터를 다루다 보면 소수점을 처리해야 할 일이 빈번합니다. 흔히 '반올림' 하면 학교에서 배운 대로 5 이상은 올리고 4 이하는 버리는 사사오입(四捨五入)을 떠올립니다.

하지만 파이썬의 round() 함수는 우리가 알던 반올림과 조금 다르게 동작합니다.

print(round(2.5))
# 결과: 2 (3이 아님!)
print(round(3.5))
# 결과: 4

어떤 때는 올리고 어떤 때는 버리는 이 동작 때문에 당황하는 경우가 많습니다. 이번 글에서는 파이썬의 반올림 규칙과, 올림(ceil), 내림(floor)을 명확하게 사용하는 방법을 정리합니다.


2. 간단한 설명

파이썬 3의 round() 함수는 '오사오입(Round Half To Even)' 방식을 따릅니다. 이를 '은행원의 반올림(Banker's Rounding)'이라고도 부릅니다.

오사오입이란?
'5'를 버릴지 넣을지는 앞자리가 짝수면 버리고, 홀수면 올리는 방식입니다. 즉, 항상 짝수 쪽으로 결과값을 유도합니다. 이 방식은 반올림할 숫자가 정확히 중간값(0.5)일 때만 적용됩니다.

  • 2.5 → 가까운 짝수 2로 내림
  • 3.5 → 가까운 짝수 4로 올림

이 방식은 통계적으로 데이터를 처리할 때, 모든 .5 값을 올리기만 하면 전체 합계가 실제보다 커지는 편향(Bias)을 줄여주는 장점이 있습니다. 하지만 직관적인 사사오입이 필요한 경우에는 적합하지 않을 수 있습니다.

명확한 올림이나 내림이 필요할 때는 math 모듈을 사용하는 것이 좋습니다.


3. 사용 사례

데이터 분석이나 UI에 숫자를 표시할 때 상황에 맞는 반올림 전략이 필요합니다.

사례: 게시판 페이지 수 계산 (올림)

전체 게시글이 101개이고 한 페이지에 10개씩 보여준다면, 페이지 수는 10.1 페이지가 아닌 11 페이지가 되어야 합니다.

 

[Before] round() 사용의 오류

total_posts = 101
per_page = 10
pages = round(total_posts / per_page) # round(10.1) -> 10
# 결과: 10 (마지막 1개의 게시글이 누락됨)

 

[After] math.ceil() 사용
무조건 소수점이 있으면 위로 올려야 하는 상황이므로 math.ceil이 정답입니다.

import math

pages = math.ceil(total_posts / per_page)
# 결과: 11

사례: 통계 데이터의 소수점 정리 (버림/내림)

사용자의 평균 체류 시간이 12.8분일 때, "12분 대"라고 표현하고 싶다면 소수점을 버려야 합니다.

[Before] int() 형변환

time = 12.8
print(int(time))
# 결과: 12

 

양수에서는 문제없지만, 음수 데이터가 섞여 있다면 int()는 0 방향으로, math.floor()는 수직선 왼쪽으로 이동하므로 결과가 달라질 수 있음을 유의해야 합니다.

수직선 왼쪽으로 이동한다는 뜻은?
수직선에서 왼쪽은 항상 더 작은 수를 의미합니다. math.floor()는 무조건 더 작은 정수를 찾습니다.

  • int(-3.5): 소수점을 떼고 0쪽으로 이동 → -3 (값이 커짐)
  • math.floor(-3.5): 수직선 왼쪽(더 작은 수)으로 이동 → -4 (값이 작아짐)

단순히 소수점만 떼고 싶다면 int(), 수학적으로 올바른 내림이 필요하면 math.floor()를 써야 합니다.


4. 맺음말

파이썬의 round()는 통계적 정밀함을 위해 설계되었지만, 일상적인 반올림 직관과는 다를 수 있습니다.

  • 통계 데이터 처리: round() (오사오입)
  • 페이지 수 등 무조건 올림: math.ceil()
  • 가격 절삭 등 무조건 내림: math.floor()

목적에 맞춰 도구를 골라 쓰는 것이 데이터 처리의 정확도를 높이는 지름길입니다.

 

반응형