알고리즘 문제를 풀다보면 값을 구할 때
자릿수를 조작해야 하는 경우가 있다.
오늘은 이렇게 소수점 자릿수를 조절할 때 쓰이는 다양한 함수를 정리해보려고 한다.
python
에서 올림, 내림, 버림 기능을 사용하려면 math
라이브러리를 사용해야 한다.
📌
math
: C 표준에서 정의한 수학 함수에 대한 액세스를 제공하는 모듈
math.ceil(x)
:
x
보다 크거나 같은 가장 작은 정수인x
의 천장값(ceiling
)을 반환한다.
import math
print(math.ceil(1.5)) # 2
print(math.ceil(-1.5)) # -1
math.floor(x)
:
x
보다 작거나 같은 가장 큰 정수인x
의 바닥값(floor
)을 반환한다.
import math
print(math.floor(1.5)) # 1
print(math.floor(-1.5)) # -2
math.trunc(x)
: 실수 값
x
를 정수로 자른 값을 반환한다.
import math
print(math.trunc(1.5)) # 1
print(math.trunc(-1.5)) # -1
💡 참고로
trunc()
는int()
와 같은 결과를 변환한다.
✅int(x)
: 숫자나 문자열x
로부터 만들어진 정수 객체를 돌려준다.
반올림은 종류(사사오입, 오사오입 등)에 따라 동작이 조금씩 다르다. 하나씩 알아보자!
반올림 할 자리의 값이 4 이하이면 버리고, 5 이상이면 올린다.
5 미만의 숫자는 버림하며 5 초과의 숫자는 올림한다.
5의 경우에는 5의 앞자리가 홀수인 경우에는 올림을 하고, 짝수인 경우에는 버림을 하여 짝수로 만들어준다.
모두 소수점 둘째 자리에서 반올림을 한다고 가정해보면 앞자리 수에 따라 다른 결과가 나온다.
6
, 즉 짝수이므로 버린다.)7
, 즉 홀수이므로 올린다.)사실 내가 생각했던 반올림 방식은 사사오입 방식이었는데 공학이나 자연 과학에서는 오사오입 방식을 많이 사용한다고 한다. 이 방식으로 계산하는 것이 오차가 가장 작아서 그렇다고 한다!
🔗 더 자세한 내용은 여기 참고!
이렇게 반올림 방식을 자세히 알아본 이유가 있다! 바로 python
의 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
Thank you for your inspiring words, I've learned a lot. We hope you will share more with us! Wishing you a happy time with your family and planet clicker free.