본문 바로가기
Python/Python 기초 배우기

[Python] 자료형 - 실수형 소수점 내림, 올림, 버림, 반올림(half to even), 소수점 자르기

by 따라쟁이개발자 2023. 1. 13.

숫자형 중 실수형의 경우 보통 소수를 표현할 때 사용합니다.

 

소수는 지정 자릿 수 기준으로 내림, 올림, 버림, 반올림을 할 수 있는데요

각각에 사용되는 함수는 math의 floor, trunc, ceil 그리고 round 입니다.

 

소수점을 특정 자리 수 기준으로 자를 때 사용하는 방식으로는

format(), "{}".format(), f-string 이 있습니다.

 

반올림인 round의 경우 half to even 원칙이 적용된다고 하는데요

함께 살펴보겠습니다.

 


소수점 내림, 버림, 올림

소수를 내림, 올림, 버림에 사용되는 함수는 아래와 같습니다.

사용을 위해서는 math를 import 받아야 합니다.

- 내림 : math.floor

- 올림 : math.ceil

- 버림 : math.trunc

 

아래는 예제이고, 주석으로 표시관 값은 출력 결과입니다.

import math
 
print(math.floor(3.5))     # 3
print(math.ceil(3.5))      # 4 
print(math.trunc(3.5))     # 3

 

 

소수점 반올림 

소수를 반올림에 사용되는 함수는 round입니다.

하나의 매개변수만 사용할 경우 소수를 정수로 처리해 주고

두 개의 매개변수를 사용할 경우, 두 번째 매개변수를 반올림하여 표시하고 싶은 소수점의 자릿수(ndigits)으로 활용합니다.

 

아래는 인터프리터를 사용해 출력해 본 결과입니다.

>>> round(3.555)
4
>>> round(3.555, 2)
3.56

 

round의 half to even 원칙

python의 round는 저희가 일반적으로 알고 있는 반올림과 조금 다르게 처리됩니다.

python의 round는 half to even 원칙을 채택하고 있습니다.

 

half to even이란 반올림을 할 때, 반올림하려는 자리 수 앞자리가 짝수가 되게 처리한다는 의미입니다.

즉, 3.5인 경우 정수자리로 반올림한다고 했을 때 4가 되고 2.5의 경우 2가 됩니다.

 

아래는 예제와 출력 결과입니다.

print(round(1.5)) # 2
print(round(2.5)) # 2
print(round(3.5)) # 4
print(round(4.5)) # 4

 

 

소수점 자르기

소수점을 사용하다 보면, 특정 자리 수에서 소수점을 잘라야 하는 경우가 생깁니다.

소수점을 자를 때 주로 사용되는 방식은 아래 세 가지입니다.

- format()  

- "{}".format()

- f-string

 

위 방식을 사용할 때 '.(숫자)f' (ex. '.1f') 와 같은 표현을 볼 수 있는데

이는 명시한 자리 수까지 소수점 표현을 하겠다는 의미입니다.

 

두 번째 방식인 "{}".format()의 경우 format에 여러 개의 매개변수를 넣을 수 있으며

표현식 {숫자, .자리수f}의 첫 번째 항목에서 format 안 여러 개 값 중 어떤 값을 표현할 것인지 직접 정해서 처리할 수 있습니다.

 

아래는 예제이며 주석은 출력 결과입니다.

참고로, formatting 한 결과는 모두 string (문자열) type 입니다.

print(format(1.25, ".1f")) 		# 1.2
print(type(format(1.25, ".1f")))	# <class 'str'>

print("{:.1f}".format(1.25)) 		# 1.2
print("첫 번째 자리까지 - 2번째 숫자 {1:.1f}".format(1.25, 100.111)) # 첫 번째 자리까지 - 2번째 숫자 100.1

print(f"{1.25:.1f}") 			# 1.2
print(f"첫 번째 자리까지 {1.25:.1f}") 	 # 첫 번째 자리까지 1.2

 


 

[ 참고 ]

 Doit! 점프 투 파이썬

사이트 Python Documentation (https://docs.python.org/)

댓글