Banker's rounding

yun·2023년 8월 11일
0
np.round(2.5)  # 2를 반환
np.round(7.5)  # 7을 반환

왜 같은 round 함수를 사용하고 .5로 끝나는 float인데 왜 2.5의 결과는 내림이 되고 7.5의 결과는 올림이 됐을까?

알고 보니 최근 Python 3을 포함하여 대부분의 언어에서 제공하는 기본 round 함수는 Banker's rounding 방식을 적용한다고 한다. (언어별 확인 필)

*numpy 공식문서

따라서,

2.5를 올리면 3, 내리면 2이므로 round 결과는 짝수인 2
7.5를 올리면 8, 내리면 7이므로 round 결과는 짝수인 8이 된다.

*참고: int(float) 방식으로 typecasting하면 결과는 항상 내림이다.

int(2.5)  # 2
int(7.5)  # 7

0개의 댓글