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의 특성을 알고 사용해야 나중에 멘붕에 빠지지 않을수 있겠네..