파이썬의 내장 함수 중 round() 함수가 존재한다.
이 함수는 숫자의 반올림을 도와주는 함수이다.
round(number, ndigits=None)
이런 형태의 매개변수를 입력받고 있고, 여기서 number는 반올림할 수, ndigits는 소수 n번째 자리에서 반올림을 할지 정해주는 거다.
아래는 round 함수에 대한 예시 코드이다.
num = round(1.3)
print(num) # 1
ndigits에 값이 들어가지 않으면 소수 첫째 자리에서 반올림이 진행된다.
num = round(3.14159, 2)
print(num) # 3.14
ndigits를 입력해 주니 소수 셋째 자리에서 반올림이 진행되는 걸 확인할 수 있다.
만약 아래와 같은 코드를 작성하게 된다면 결과가 어떻게 될까?
print(round(1.5))
print(round(2.5))
print(round(3.5))
print(round(4.5))
우리는 소수 n번째 자리에서의 숫자가 0-4라면 버림을 5-9라면 올림을 한다는 걸로 알고 있다.
그렇다면 결과가 각각 2, 3, 4, 5로 나올까?
2
2
4
4
결과는 우리가 예상한 것과는 다르게 도출되었다.
왜 이런 방식으로 나오는지 이해하려면 사사오입 원칙과 오사오입 원칙을 알아봐야 한다.
사사오입 원칙이란, 위에서 설명했던 방식처럼 소수 n번째 자리에서의 숫자가 0-4라면 버림을 5-9라면 올림을 하는 원칙이다.
13.1415의 예시
- 소수 넷째 자리에서 반올림: 3.142
- 소수 셋째 자리에서 반올림: 3.14
- 소수 둘째 자리에서 반올림: 3.1
- 소수 첫째 자리에서 반올림: 3
- 일의 자리에서 반올림: 10
이것은 우리가 일상생활에서 흔히 쓰는 반올림 방식이다.
하지만 round() 함수에선 오사오입 원칙을 따른다.
오사오입 원칙이란, 반올림하려는 숫자가 0 이상 5 미만이라면 버림을 5 초과 9 이하라면 올림을 5일 경우 그 앞의 숫자가 홀수면 올림을 아니라면 내림을 하는 방식이다.
2.5를 오사오입 원칙으로 소수 첫째 자리에서 반올림을 하게 될 경우 다음과 같은 방식으로 수행된다.
소수 첫째 자리의 숫자가 무엇인가? -> 숫자가 5이다.
그 앞의 숫자는 짝수인가 홀수인가? -> 짝수다.
내림한다.
즉, 결과는 2이다.
그래서 2.5와 4.5의 round() 함수 리턴값이 2와 4로 나왔던 것이다.
이로써 round() 함수와 사사오입 원칙, 오사오입 원칙에 대해 알아보았다.
round() 함수는 자체적으로 오사오입 원칙을 사용하기에 사사오입 원칙을 사용하려면 자체적으로 함수를 구현해야 한다.
이와 관련된 백준 링크를 하나 걸어둘 테니 관심 있는 사람들은 풀어보면 좋을 것이다.
'개발' 카테고리의 다른 글
| Blob 이모지 테스트 :blobaww: (0) | 2025.12.17 |
|---|---|
| [파이썬] JSON 사용 시 TypeError: Object of type bytes is not JSON serializable 에러 (0) | 2025.09.28 |
| [파이썬] 10진수 값을 n진수로 변환하는 코드 (0) | 2025.08.19 |
| 구글 앱 비밀번호 생성하기 (0) | 2025.08.15 |
| [파이썬] ඞ 어몽어스 캐릭터 출력하기!! (0) | 2025.06.18 |