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