Python의 round함수는 round half even 방식을 체택하고 있다.
- round half even이란?
예를 들어 0.25 를 소수 2번째 자리에서 반올림 하고싶다고 하자. 이때 모두 결과가 0.3일 것을 예상하지만 파이썬의round()
함수를 사용하면 0.2이다. 즉, 반올림 하는 자리가 정확히 절반인 5일때 앞자리가 짝수가 되도록 반올림하는것이 round half even 방식이다.
이러한 문제점을 해결하기 위해 다음과 같은 함수를 만들어보았다.
def round_half_up(x, n):
x = int(x*(10**n) + 0.5)
length = len(str(x))
x = float(str(x*(10**-n))[:length+1])
return x