Notice
Recent Posts
Recent Comments
05-12 20:04
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

-

[Python] 파이썬 사사오입으로 반올림, round 반올림 문제점 본문

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

 

반응형
Comments