[Python] 올림, 내림, 버림, 반올림 함수
알고리즘 문제를 풀다보면 값을 구할 때
- 소수점은 버리고 정수 부분만 원하거나
- 소수점 4째자리까지만 원하는 등
자릿수를 조작해야 하는 경우가 있다.
오늘은 이렇게 소수점 자릿수를 조절할 때 쓰이는 다양한 함수를 정리해보려고 한다.
[ 올림 , 내림, 버림 ]
python
에서 올림, 내림, 버림 기능을 사용하려면 math
라이브러리를 사용해야 한다.
📌
math
: C 표준에서 정의한 수학 함수에 대한 액세스를 제공하는 모듈
1. 올림 - ceil
함수
math.ceil(x)
:
x
보다 크거나 같은 가장 작은 정수인x
의 천장값(ceiling
)을 반환한다.
import math
print(math.ceil(1.5)) # 2
print(math.ceil(-1.5)) # -1
2. 내림 - floor
함수
math.floor(x)
:
x
보다 작거나 같은 가장 큰 정수인x
의 바닥값(floor
)을 반환한다.
import math
print(math.floor(1.5)) # 1
print(math.floor(-1.5)) # -2
3. 버림 - trunc
함수
math.trunc(x)
: 실수 값
x
를 정수로 자른 값을 반환한다.
import math
print(math.trunc(1.5)) # 1
print(math.trunc(-1.5)) # -1
💡 참고로
trunc()
는int()
와 같은 결과를 변환한다.
✅int(x)
: 숫자나 문자열x
로부터 만들어진 정수 객체를 돌려준다.
[ 반올림 ]
1. 반올림이란?
반올림은 종류(사사오입, 오사오입 등)에 따라 동작이 조금씩 다르다. 하나씩 알아보자!
✅ 사사오입 (Round-off
)
반올림 할 자리의 값이 4 이하이면 버리고, 5 이상이면 올린다.
- 73
- 일의 자리에서 반올림: 70
- 십의 자리에서 반올림: 100
- 51.61
- 소수점 둘째 자리에서 반올림: 51.6
- 소수점 첫째 자리에서 반올림: 52
- 일의 자리에서 반올림: 50
- 십의 자리에서 반올림: 100
✅ 오사오입 (Round-to-nearst-even
)
5 미만의 숫자는 버림하며 5 초과의 숫자는 올림한다.
5의 경우에는 5의 앞자리가 홀수인 경우에는 올림을 하고, 짝수인 경우에는 버림을 하여 짝수로 만들어준다.
모두 소수점 둘째 자리에서 반올림을 한다고 가정해보면 앞자리 수에 따라 다른 결과가 나온다.
- 54.65 → 54.6 (앞자리 수가
6
, 즉 짝수이므로 버린다.) - 54.75 → 54.8 (앞자리 수가
7
, 즉 홀수이므로 올린다.)
사실 내가 생각했던 반올림 방식은 사사오입 방식이었는데 공학이나 자연 과학에서는 오사오입 방식을 많이 사용한다고 한다. 이 방식으로 계산하는 것이 오차가 가장 작아서 그렇다고 한다!
🔗 더 자세한 내용은 여기 참고!
이렇게 반올림 방식을 자세히 알아본 이유가 있다! 바로 python
의 round()
함수가 바로 이 오사오입 방식을 사용하기 때문이다.
2. round
함수
round(number[, ndigits])
number
를 소수점 다음에ndigits
정밀도로 반올림한 값을 돌려준다.
ndigits
가 생략되거나None
이면, 입력에 가장 가까운 정수를 돌려준다.
ndigits
정밀도로 반올림한 값을 돌려준다는 뜻은 소수점 ndigits
자리수에서 반올림을 한다는 것이 아닌, 반올림한 결과가 소수점 아래 ndigits
까지 출력한다는 뜻이다.
예를 들어 round(3.12, 1)
에서 소수점 첫째 자리에서 반올림한 결과(3
)가 아닌, 3.1
이 출력된다.
예제
a = 4.5
b = 54.65
c = 54.75
print(round(a)) # 정수 반환
print(round(b, 1)) # 앞자리가 짝수이므로 버림
print(round(c, 1)) # 앞자리가 홀수이므로 올림
실행 결과
4
54.6
54.8
[ 참고자료 ]
https://ko.wikipedia.org/wiki/%EB%B0%98%EC%98%AC%EB%A6%BC
https://docs.python.org/ko/3/library/functions.html?highlight=round#round
https://yaneodoo2.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%98%EC%98%AC%EB%A6%BC-%EC%98%AC%EB%A6%BC-%EB%82%B4%EB%A6%BC-%EB%B2%84%EB%A6%BC-round-ceil-floor-trunc%EC%9D%98-%EB%AA%A8%EB%93%A0-%EA%B2%83
https://docs.python.org/ko/3/library/functions.html#int
Author And Source
이 문제에 관하여([Python] 올림, 내림, 버림, 반올림 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mmy789/Python-반올림-내림-올림에-대해-알아보자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)