- 소수점 반올림은 내장함수 round() 사용
#round() number 를 소수점 다음에 ndigits 정밀도로 반올림한 값을 반환
#0.5 이상 반올림
print(f"1.4: {round(1.4)}") # 1.4: 1
print(f"1.5: {round(1.5)}") # 1.5: 2
print(f"1.6: {round(1.6)}") # 1.6: 2
print(f"3.4: {round(3.4)}") # 3.4: 3
print(f"3.5: {round(3.5)}") # 3.5: 4
print(f"3.6: {round(3.6)}") # 3.6: 4
#주의 : 2.5 인 경우 2 반환
print(f"2.4: {round(2.4)}") # 2.4: 2
print(f"2.5: {round(2.5)}") # 2.5: 2
print(f"2.6: {round(2.6)}") # 2.6: 3
#2.51 인 경우 3 반환
print(f"2.51: {round(2.51)}") # 2.51: 3
#float에 대한 round() 의 동작은 예상과 다를 수 있음
#예를 들어, round(2.675, 2) 는 2.68 대신에 2.67 을 제공합니다.
#이것은 버그가 아닙니다. 대부분의 십진 소수가 float로 정확히 표현될 수 없다는 사실로부터 오는 결과입니다.
- 소수점 올림은 math 수학 모듈의 ceil() 함수 사용
#math.ceil(x) x보다 크거나 같은 가장 작은 정수인 x의 상한선을 반환.
import math
print(math.ceil(2.4)) # 3
print(math.ceil(2.5)) # 3
print(math.ceil(2.6)) # 3
print(math.ceil(3.14)) # 4
print(math.ceil(3.51)) # 4
print(math.ceil(3.69)) # 4
▶ 반올림 연습 백준 문제 풀이
- https://www.acmicpc.net/problem/2033
※ round() 함수를 사용하지는 않았지만, 반올림 관련 문제라 참고
N = input()
roundYN = False
rtn = ""
#입력값 1자리부터 반올림 여부 판단
for i in range(len(N)-1, -1, -1):
num = int(N[i])
#반올림여부 True이면 반올림 처리
if (roundYN):
num += 1
#num = num + cnt * "0"
#입력값의 제일 높은 수인 경우
if (i == 0):
rtn = str(num) + rtn
#반올림하고 0 으로 처리
elif (num > 4):
rtn = "0" + rtn
roundYN = True #반올림 처리
#반올림하지 않고 0으로 처리
else:
rtn = "0" + rtn
roundYN = False #반올림 미처리
print(rtn)
▷ 파이썬 자습서 참고 사이트
- https://docs.python.org/ko/3/library/functions.html#round
- https://docs.python.org/ko/3/library/math.html#math.ceil
'코딩라이브러리 > 파이썬' 카테고리의 다른 글
파이썬 문자열 formatter string (with 백준 2739) (0) | 2024.05.20 |
---|---|
파이썬 문자열 거꾸로 해보기 (with 백준 1251 6438) (0) | 2024.05.19 |
파이썬 정수, 실수 형변환 데이터형 확인 (0) | 2024.05.18 |
파이썬 소수점 버림 trunc() floor() (with 백준 10869) (0) | 2024.05.15 |
파이썬 문자인지 숫자인지 (with 백준 10926) (0) | 2024.05.11 |