Notice
Recent Posts
Recent Comments
12-12 13:33
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준 크리문자열
- react
- join
- github
- SAA-C02
- 리스트 컴프리헨션
- 백준 24499 파이썬
- 파이썬
- 프로그래머스 조건에 맞는 개발자 찾기
- AWS
- 백준 11059
- 알고리즘
- 백준 2852
- 깃허브
- ROWNUM
- 정규화
- 데이터베이스
- SQLD
- 백준 1756
- sql
Archives
- Today
- Total
-
[Python] 파이썬 사사오입으로 반올림, round 반올림 문제점 본문
반응형
파이썬 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
반응형
'Python' 카테고리의 다른 글
[Python] 입력 개수 모를 때 처리 방법 (0) | 2023.10.08 |
---|---|
[파이썬] 리스트간 뺄셈 구현 (리스트 차집합) (0) | 2023.04.29 |
[파이썬] 리스트 원소 길이순으로 정렬하기 (0) | 2023.04.15 |
[Python] print 문의 옵션 (sep, end, format, escape) (0) | 2022.05.11 |
[Python] 리스트 컴프리헨션 (0) | 2022.05.10 |
Comments