Python
[Python] 파이썬 사사오입으로 반올림, round 반올림 문제점
choiht
2024. 1. 31. 17:57
반응형
파이썬 round 함수의 반올림은 우리가 흔히 아는 사사오입,
즉 소수점 끝자리가 4 이하면 버리고, 5 이상이면 올리는 반올림 방법과 다르다.
예를 들어 2와 3 중간에 위치해 있는 2.5의 경우, round 함수를 사용해서 반올림하면 가까운 짝수 쪽으로 가게 된다.
우리가 아는 반올림은 2.5 → 3 이지만, round 함수를 쓰면 2.5 → 2가 되는 것이다.
print(round(0.5)) # 0
print(round(1.5)) # 2
print(round(2.5)) # 2
print(round(3.5)) # 4
print(round(4.5)) # 4
print(round(5.5)) # 6
print(round(6.5)) # 6
이를 해결하기 위해서는 아래 코드처럼 함수를 하나 만들어놓고 사용하는 것이 낫다.
def newRound(val, digits):
return round(val+10**(-len(str(val))-1), digits)
print(newRound(0.5, 0)) # 1.0
print(newRound(1.5, 0)) # 2.0
print(newRound(2.5, 0)) # 3.0
print(newRound(3.5, 0)) # 4.0
print(newRound(4.5, 0)) # 5.0
print(newRound(5.5, 0)) # 6.0
반응형