백준의 알고리즘 문제를 풀면서 소수 몇 번째 자리에서 반올림을 하여 출력을 하는 문제를 몇 가지 만났습니다.
개념 자체는 쉬운 개념이지만, 한 번씩 해당 함수의 사용법을 까먹곤 해서 사용법을 정리하고자 합니다.
밑의 게시물들이 알고리즘 문제를 풀면서 반올림과 부딪혔던 것을 풀었던 게시물입니다.
round 함수 : 반올림
밑의 링크는 파이썬 공식 문서에서의 round 함수 설명입니다.
파이썬에서 반올림을 할 수 있는 함수는 round입니다.
round 함수는 파이썬 내장 함수이므로, 따로 특정 패키지를 import 하지 않더라도 바로 사용할 수 있습니다.
정확한 사용법은 매개변수가 1개 혹은 2개가 들어가는 방식으로 사용합니다.
- round('반올림을 할 숫자')
- round('반올림을 할 숫자', '정밀도')
매개변수가 1개인 경우에는 소수점 첫째 자리에서 반올림을 합니다.
매개변수가 2개인 경우에는 2번째 매개변수에 입력한 정밀도를 통해
반올림을 할 자릿수를 조절해서 표시할 수 있습니다.
2번째 매개변수의 예시는 다음과 같습니다.
2번째 매개변수가 1인 경우에는 소수점 첫째 자리까지 표시한다는 것이므로,
소수점 둘째 자리에서 반올림을 한다는 뜻입니다.
2번째 매개변수가 0인 경우에는 일의 자리까지 표시한다는 것이므로,
소수점 첫째 자리에서 반올림을 한다는 뜻입니다.
2번째 매개변수가 1인 경우에는 십의 자리까지 표시한다는 것이므로,
일의 자리에서 반올림을 한다는 뜻입니다.
밑의 예제, 결과는 양수를 대상으로 round 함수를 써본 예제, 결과입니다.
# 양수를 하나 선언합니다.
number = 9876.54321
# 매개변수가 1개이므로 소수점 첫째 자리인 5에서 반올림한 결과인 9877을 출력합니다.
# 매개변수가 1개일 때는 반환형이 정수인 int입니다.
print("매개변수가 1개일 때의 결과:", round(number))
print("매개변수가 1개일 때 결과의 반환형:", type(round(number)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 0이므로 일의 자리까지 표현합니다.
# 즉, 소수점 첫째 자리인 5에서 반올림한 결과인 9877.0을 출력합니다.
# round 함수에서 두 번째 매개변수가 있다면 float 형태로 반환됩니다.
# 따라서 round 함수에서 두 번째 매개변수를 사용하지 않은 결과와 숫자값은 같지만,
# 뒤에 .0이 붙은 반환형인 float로 반환됩니다.
print("두 번째 매개변수가 0일 때의 결과: ", round(number, 0))
print("두 번째 매개변수가 0일 때 결과의 반환형:", type(round(number, 0)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 1이므로 소수점 첫째 자리까지 표현합니다.
# 즉, 소수점 둘째 자리인 4에서 반올림한 결과인 9876.5를 출력합니다.
print("두 번째 매개변수가 1일 때의 결과: ", round(number, 1))
print("두 번째 매개변수가 1일 때 결과의 반환형:", type(round(number, 1)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 2이므로 소수점 둘째 자리까지 표현합니다.
# 즉, 소수점 셋째 자리인 3에서 반올림한 결과인 9876.54를 출력합니다.
print("두 번째 매개변수가 2일 때의 결과: ", round(number, 2))
print("두 번째 매개변수가 2일 때 결과의 반환형:", type(round(number, 2)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 -1이므로 십의 자리까지 표현합니다.
# 즉, 일의 자리에서 반올림한 결과인 9880.0을 출력합니다.
print("두 번째 매개변수가 -1일 때의 결과: ", round(number, -1))
print("두 번째 매개변수가 -1일 때 결과의 반환형:", type(round(number, -1)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 -2이므로 백의 자리까지 표현합니다.
# 즉, 십의 자리에서 반올림한 결과인 9900.0을 출력합니다.
print("두 번째 매개변수가 -2일 때의 결과: ", round(number, -2))
print("두 번째 매개변수가 -2일 때 결과의 반환형:", type(round(number, -2)))
print("----------------------------------------------------\n")
밑의 예제는 음수를 대상으로 round 함수를 써본 예제입니다.
사람이 음수를 반올림하는 방법은 밑의 링크에서 파트 2 특별한 경우에서 2번 항목을 확인하시면 됩니다.
# 음수를 하나 선언합니다.
number = -9876.54321
# 매개변수가 1개이므로 소수점 첫째 자리인 5에서 반올림한 결과인 -9877을 출력합니다.
# 매개변수가 1개일 때는 반환형이 정수인 int입니다.
print("매개변수가 1개일 때의 결과:", round(number))
print("매개변수가 1개일 때 결과의 반환형:", type(round(number)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 0이므로 일의 자리까지 표현합니다.
# 즉, 소수점 첫째 자리인 5에서 반올림한 결과인 -9877.0을 출력합니다.
# round 함수에서 두 번째 매개변수가 있다면 float 형태로 반환됩니다.
# 따라서 round 함수에서 두 번째 매개변수를 사용하지 않은 결과와 숫자값은 같지만,
# 뒤에 .0이 붙은 반환형인 float로 반환됩니다.
print("두 번째 매개변수가 0일 때의 결과: ", round(number, 0))
print("두 번째 매개변수가 0일 때 결과의 반환형:", type(round(number, 0)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 1이므로 소수점 첫째 자리까지 표현합니다.
# 즉, 소수점 둘째 자리인 4에서 반올림한 결과인 -9876.5를 출력합니다.
print("두 번째 매개변수가 1일 때의 결과: ", round(number, 1))
print("두 번째 매개변수가 1일 때 결과의 반환형:", type(round(number, 1)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 2이므로 소수점 둘째 자리까지 표현합니다.
# 즉, 소수점 셋째 자리인 3에서 반올림한 결과인 -9876.54를 출력합니다.
print("두 번째 매개변수가 2일 때의 결과: ", round(number, 2))
print("두 번째 매개변수가 2일 때 결과의 반환형:", type(round(number, 2)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 -1이므로 십의 자리까지 표현합니다.
# 즉, 일의 자리에서 반올림한 결과인 -9880.0을 출력합니다.
print("두 번째 매개변수가 -1일 때의 결과: ", round(number, -1))
print("두 번째 매개변수가 -1일 때 결과의 반환형:", type(round(number, -1)))
print("----------------------------------------------------\n")
# 두 번째 매개변수가 -2이므로 백의 자리까지 표현합니다.
# 즉, 십의 자리에서 반올림한 결과인 -9900.0을 출력합니다.
print("두 번째 매개변수가 -2일 때의 결과: ", round(number, -2))
print("두 번째 매개변수가 -2일 때 결과의 반환형:", type(round(number, -2)))
print("----------------------------------------------------\n")
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
다음 글:
2021.05.15 - [프로그래밍/Python] - [Python] round 함수 : 반올림 (2) - 예상과는 다른 결과
댓글