728x90
반응형
오사오입
-
파이썬 round 함수의 오류 (2.5가 2가되는 마법 - 사사오입과 오사오입)Tips 2022. 9. 30. 00:33
코드에 결과값이 이상하게 나와서 디버깅을 하다보니 round함수를 거치니 2.5가 2가되는 현상을 발견했다. 생각해보니 예전에도 이런 적이 있었는데 또 까먹고 이걸 쓰고 있는 내 자신을 보고 이번엔 궁금증을 해결한 흐름에 따라 글로 남겨보려고 한다. 왜 2.5의 반올림이 2가 되었는가? 결론부터 말하면 파이썬의 round함수는 오사오입(5미만이면 죽이고 5이상이면 올리는)방식을 채택하고 있기 때문이다. 영어로 Banker's Rounding이라고 한다. 이 방법을 따르면 소숫점이 0.5가 아닌 경우에는 일반적으로 우리가 알고 있는 반올림과 같은 방법으로 수행되지만, 소숫점이 0.5인 경우에는 정수 부분이 짝수인 경우 소숫점을 버린다. 즉, 2.5, 4.5, 14.5 ... 는 2,4,14가 된다. (원칙..