본문 바로가기
코딩라이브러리/파이썬

파이썬 소수점 반올림 올림 round()와 ceil() (with 백준 2033)

by 유니네 라이브러리 2024. 5. 17.
  • 소수점 반올림은 내장함수 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

 

▶ 반올림 연습 백준 문제 풀이

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)

 

▷ 파이썬 자습서 참고 사이트

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org