Programming/Python

반올림은 반올림이 아니다? round의 처리 방법

매직블럭 2021. 4. 13. 13:31

일반적으로 round는 반올림을 하는 함수로 생각하고 있었다.

5미만은 버림, 5이상은 올림을 수행하는 통계적인 반올림..

 

그러나 파이썬에서 round는 이러한 통계적 반올림을 수행하는 것이 아니란것을 알게됨.

 

그렇다면? 파이썬의 round는 0 또는 짝수에 가깝게 만드는 방향으로 수행된다.

 

예를들어 0.5, 1.5, 2.5 의 값이 있을경우 각각의 반올림 결과는

0, 2, 2 가된다. ( 1, 2, 3 이 아니고?? )

 

왜냐하면 python의 수학적 반올림 기법에서는

0 < 0.5 << 1(홀수)

1(홀수) << 1.5 < 2 (짝수)

2(짝수) < 2.5 << 3 (홀수) 

로 처리되어 1.5와 2.5의 round 결과가 동일하게 처리됨을 알 수 있다.

 

정확한 통계적 반올림 결과가 필요하다면 직접 구현이 필요할 것이고,

아니라면 round의 특성을 알고 사용해야 나중에 멘붕에 빠지지 않을수 있겠네..