언어 Language/파이썬 Python

Q. 파이썬Python 기본 반올림 함수인 round(0.5)의 결과는?

Tap to restart 2023. 10. 12. 23:00

A. 0이다.

 

중고등학교 수학시간에 배운 반올림 방식으로 생각하면 1이어야 할 거 같은데 0이 나온다.

그 이유는 파이썬 round는 우리가 수학시간 때 배운 사사오입 방식 4이면 내리고 5이면 올리는 게 아니라 오사오입 방식이기 때문이다. (참고: 반올림 위키백과)오일 때 버리고 그 다음 오는 올린다. 그래서 round(0.5) -> 0, round(1.5) -> 2가 된다. 결과가 짝수로 나온다.

 

round(0.5) -> 0

round(1.5) -> 2

round(2.5) -> 2

round(3.5) -> 4로 가까운 짝수값이 나온다.

소숫점 첫째 자리에서 반올림해봐도 특이하다.

round(0.01, 1) -> 0.0

round(0.05, 1) -> 0.1

round(0.15, 1) -> 0.1

round(0.25, 1) -> 0.2

round(0.35, 1) -> 0.3

round(0.45, 1) -> 0.5

로 나온다.

해결 방법

아래처럼 decimal.ROUND_HALF_UP을 활용하면 수학시간대 배운대로 얻을 수 있다.

import decimal
context = decimal.getcontext()
context.rounding = decimal.ROUND_HALF_UP
round(decimal.Decimal('0.5'), 0)

출처: https://stackoverflow.com/questions/40631553/python-3-decimal-rounding-half-down-with-round-half-up-context

참고할 문서

파이썬 자리 올림 모드