반올림 종류
파이썬 round() 반올림 함수는 기본적으로 오사오입의 방식을 따른다.
반올림 종류
- 사사오입 (Rounding half up) : 4 이하 버림, 5 이상 올림
- 오사오입 (Rounding half to even) : 5 미만 버림, 5 초과 올림 / 5는 앞자리가 홀수인 경우 올림, 짝수인 경우 버림 => 수를 짝수로 만들어 주는 방식 ex) 35 -> 40 / 25 -> 20 / python의 round() 함수
- 오사육입 (Rounding half down) : 5 이하 버림, 5 초과 올림
관련 링크
- 반올림 위키 : https://ko.wikipedia.org/wiki/%EB%B0%98%EC%98%AC%EB%A6%BC
- python3 round() 함수 링크 : https://docs.python.org/3/library/functions.html#round
Python 커스텀 round() 함수
목표
- 기존 round() 함수 처럼 첫번째 인자 : 수 / 두번째 인자 digits
- 정수 부분을 반올림 하는 경우 digits 를 음수로 입력 (ex. round(356, -2) : 10의 자리에서 반올림
- 자연수 및 양의 실수 처리
기존의 python round() 함수 처럼 .
# 반올림 - 사사오입 방법 (양수 전용, 음수는 그냥 round)
def round_half_up(num, digits=0):
# 자연수 | 반올림 자릿수 음수 | (ex. 331600, -3) => 332000
if num >= 0 > digits and (int(num) == num):
epsilon = 0.0000001
return round(num + epsilon, digits)
# 양의 실수 | 반올림 자릿수 양수
elif num >= 0 and digits >= 0:
multiplier = 10**digits
return math.floor(num * multiplier + 0.5) / multiplier
# 나머지 반올림
else:
return round(num, digits)
음수 반올림은 차후에 구현..
'Python > Utils' 카테고리의 다른 글
[Naver Map] 요구사항 별 사용 API 및 기능 정리 등 (0) | 2024.07.27 |
---|---|
[Utils] Custom Pre-commit hook 구현 (0) | 2023.06.24 |
[Python] Datetime 이해 - aware, naive, datetime, timezone 등 (0) | 2023.05.29 |
[Python Utils] 코드 컨벤션 템플릿 셋팅 (pre-commit, black, pycharm) (0) | 2023.05.29 |
[Python Utils] Python 매직메소드 (MagicMethod) 이해하기 (0) | 2022.10.14 |