python round 주의점

YangJiWon·2020년 7월 9일
0

python

목록 보기
4/12

파이썬 round의 주의점

  • 파이썬의 round 내장 함수는 반올림 함수입니다.
    ! 그런데 주의점이 있습니다. python에서 사용하고 있는 round 내장 함수는 round_half_up 방식이 아니라 round_half_even 방식을 채택하고 있는데요.
    어떤 차이가 있는지 보겠습니다.
a = 4.500
print(round(a))
-> 4

python의 round_half_even 방식은 정확하게 4.5이고 반올림을 시켰을 때 4로 내림을 시킵니다. 그 이유는 앞의 숫자가 짝수이고 0.5로 정확하게 숫자의 중간이기 때문입니다. 즉, 짝수쪽으로 반올림을 해줍니다.

다른 예제를 보면

a = 4.511
print(round(a))
-> 5

여기서는 정확하게 반올림을 할 때 위쪽으로 치우쳐져 있으므로 문제가 되지 않고 정확하게 우리가 아는 반올림 역할을 해줍니다.

a = 5.500
print(round(a))
-> 6

5.500는 딱 중간에 있기 때문에 짝수를 만들기 위해 6으로 올림을 해줍니다.

해결 방법

  • 간단하게 하는 방법은 소수 첫째자리에서 반올림한다고 했을 때는 0.5를 더한 뒤 내림을 시켜주면 됩니다.
    소수 첫째 자리 반올림
 a = 66.5
 a = a + 0.5
 a = int(a) #를 하거나
 a = floor(a) #를 하거나
 a = trunc(a)
  • 나머지도 floor함수를 이용해서 소수 둘째 자리든, 셋째 자리든 모두 적용할 수 있습니다.

정리

  • python 내장 함수인 round는 round_half_even 방식을 사용하고 있습니다. 이는 앞자리의 숫자가 짝수면 내림하고 홀수면 올림을 한다는 방식입니다.
  • 이를 해결하기 위해, 소수 자릿 수에 반절을 더한 뒤(예 : 소수 첫 째 자리는 0.5 더하기) 내림(floor)을 시켜주면 됩니다.
profile
데이터데이터데이터!!

0개의 댓글