Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 편스토랑 우승상품
- AI 경진대회
- hackerrank
- Baekjoon
- ChatGPT
- dacon
- 편스토랑
- 더현대서울 맛집
- 자연어처리
- github
- 파이썬
- 백준
- gs25
- SW Expert Academy
- programmers
- Kaggle
- 프로그래머스 파이썬
- ubuntu
- 맥북
- 우분투
- 코로나19
- Docker
- Git
- PYTHON
- 데이콘
- leetcode
- 프로그래머스
- 캐치카페
- 금융문자분석경진대회
- Real or Not? NLP with Disaster Tweets
Archives
- Today
- Total
솜씨좋은장씨
[Python] round 함수 사용 시 주의 사항! 본문
728x90
반응형
1. 소수점 단위 반올림 관련 ( 소수점 두번째 이상 부터 )
오늘 아침에 일어나서 코딩 1일 1문제 풀기 문제로 백준의 이번학기 평점은 몇점? 문제를 푸는데
소수점 세번째 자리에서 반올림을 하는 부분을
round(score, 2)
위처럼 round 함수를 활용하여 구하였는데 이상하게 반올림이 되지않고 버림이 되는 문제가 있었습니다.
직접 테스트 해보니 소수점 두번째 부터는 round의 동작이
기존에 알고있는 반올림과 다르게
반올림하는 값의 앞의 값이 홀수일 경우
0~5 값은 내림, 6~9 까지의 값은 올림이
반올림하는 값의 앞의 값이 0또는 짝수일 경우
0~4 값은 내림, 5~9 까지의 값은 올림이
되었습니다.
직접 결과를 확인해보면 아래와 같습니다.
round(2.205, 2)
> 2.21
round(2.215, 2)
> 2.21
round(2.225, 2)
> 2.23
round(2.235, 2)
> 2.23
round(2.245, 2)
> 2.25
round(2.255, 2)
> 2.25
round(2.265, 2)
> 2.27
round(2.275, 2)
> 2.27
round(2.285, 2)
> 2.29
round(2.295, 2)
> 2.29
2. 소수점 첫번째 반올림 관련
추가로 더 알아보니 소수점 첫번째에서 반올림 할때에는
정수의 값 중 1의 자리의 숫자에 따라 결과 값이 달랐습니다.
정수의 값 중 1의 자리의 숫자가 짝수일 경우
0~5 값은 내림, 6~9 까지의 값은 올림
정수의 값 중 1의 자리의 숫자가 홀수일 경우
0~4 값은 내림, 5~9 까지의 값은 올림
이 되었습니다.
직접 결과를 보면 아래와 같습니다.
round(0.5)
> 0
round(1.5)
> 2
round(2.5)
> 2
round(3.5)
> 4
round(4.5)
> 4
round(5.5)
> 6
round(6.5)
> 6
round(7.5)
> 8
round(8.5)
> 8
round(9.5)
> 10
% 직접 만든 반올림 함수
def my_round(number, n=1):
pow_ten = pow(10, n)
number = number * pow_ten
if number % 10 > 4:
number += (10 - number % 10)
number = number / pow_ten
return float(str(number)[:n+2])
혹시 틀린 것이 있다면 언제든 댓글로 알려주세요!
앞으로 사용할때 주의하면서 사용해야할 것 같습니다!
읽어주셔서 감사합니다.
'Programming > Python' 카테고리의 다른 글
Comments