본문 바로가기

공부

[Python] 소수 2자리 출력하기 (반올림, 올림, 버림)

728x90

반올림

f-string

pi = 3.1415926535
print(f"{pi:.2f}") #3.14

f-string은 f"{number:.nf}" 형태로 사용하며 소수 number를 n자리까지 반올림한다.

파이썬 3.6부터 업데이트된 기능이다. f와 {}중괄호를 사용하여 문자열을 포맷팅한다.

소수 몇 자리까지 출력하는 기능 이외에도 다양하게 활용할 수 있다.

round

pi = 3.1415926535
print(round(pi, 2)) #3.14

round(number, n)은 number를 n자리까지 반올림한다.

 

올림

math.ceil

import math

pi = 3.1415926535
print(math.ceil(pi * 100) / 100) #3.15

math.ceil(number)은 number를 소수 한자리에서 올림한다. (결과적으로 정수 출력)

따라서 소수 n자리까지 출력하기 위해서는  10**n만큼을 number에 곱하고 올림된 값에서 다시 곱해준 100을 나눠주면 결과를 알 수 있다.

 

내림

math.floor

import math

pi = 3.1415926535
print(math.floor(pi * 100) / 100) #3.14

math.floor(number)은 number의 소수점 이하 숫자들을 모두 버린다(내린다).

따라서 소수 n자리까지 출력하기 위해서는  10**n만큼을 number에 곱하고 버림된 값에서 다시 곱해준 100을 나눠주면 결과를 알 수 있다.

 

버림

math.trunc

import math

pi = 3.1415926535
print(math.trunc(pi * 100) / 100) #3.14

math.trunc(number)은 number의 소수점 이하 숫자들을 모두 버린다.

따라서 소수 n자리까지 출력하기 위해서는  10**n만큼을 number에 곱하고 버림된 값에서 다시 곱해준 100을 나눠주면 결과를 알 수 있다.

반올림없이 소수점 2자리까지 출력

import math

number = 1.267

print (f"{(math.trunc(number * 100) / 100):.2f}") #1.26

예를 들어 number가 3.5일 때, math.trunc(number * 100) / 100만 사용하는 경우 3.50이 아니라 3.5만 출력되는 문제가 있었다. 그렇다고 f-string만 사용하면 반올림이 돼서 원하는 답이 안나오는 상황이 발생했다.

따라서 trunc와 f-string을 함께 사용하여 반올림없이 소수점 2자리까지만 출력되는 버림을 구현했다.

 

비교(반올림, 올림, 내림, 버림)

import math

# 반올림 : 가장 가까운 정수를 택한다.
math.round(1.1) # 1
math.round(-1.7) # -2

# 올림 : 양수 방향으로 정수를 택한다.
math.ceil(1.1) # 2
math.ceil(-1.7) # -1

# 내림 : 음수 방향으로 정수를 택한다.
math.floor(1.1) # 1
math.floor(-1.7) # -2

# 버림 : 0의 방향으로 정수를 택한다.
math.trunc(1.1) # 1
math.trunc(-1.7) # -1
반응형