반응형
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)
참고할 문서
반응형