Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 부동소수점 정밀도 처리 방법 총정리: trunc, ceil, floor부터 round까지

Python에서는 다양한 함수를 활용해 부동소수점(floating point) 숫자의 정밀도를 손쉽게 처리할 수 있습니다. 정밀도 처리에 사용되는 대부분의 함수는 math 모듈에 정의되어 있으므로, 이를 사용하기 전에 먼저 현재 네임스페이스로 모듈을 임포트해야 합니다.

import math

이제 정밀도 처리에 활용할 수 있는 주요 함수들을 하나씩 살펴보겠습니다.

trunc() 함수 – 소수점 이하 제거

trunc() 메서드는 부동소수점 숫자에서 소수점 이하 부분을 모두 잘라내고, 오직 정수 부분만 반환합니다. 즉, 숫자를 0을 향해 절사(truncate)하는 방식으로 동작합니다.

ceil() 함수 – 올림 값 반환

ceil() 메서드는 숫자의 천장(ceiling) 값을 반환합니다. 천장 값이란 해당 숫자보다 크거나 같은 정수 중 가장 작은 값을 의미합니다. 예를 들어 45.256의 천장 값은 46입니다.

floor() 함수 – 내림 값 반환

floor() 메서드는 숫자의 바닥(floor) 값을 반환합니다. 바닥 값이란 해당 숫자보다 작거나 같은 정수 중 가장 큰 값을 의미합니다. 예를 들어 45.256의 바닥 값은 45입니다.

예제 코드

import math
number = 45.256
print('Remove all decimal part: ' + str(math.trunc(number)))
print('Ceiling Value: ' + str(math.ceil(number)))
print('Floor Value: ' + str(math.floor(number)))

실행 결과

Remove all decimal part: 45
Ceiling Value: 46
Floor Value: 45

위에서 살펴본 함수들을 사용하면 소수 부분을 제거하고 원하는 정수 값을 얻을 수 있습니다. 이번에는 소수 부분을 더 효과적으로 관리하는 방법을 알아보겠습니다.

% 연산자 – 문자열 포맷팅으로 정밀도 설정

% 연산자는 Python에서 문자열을 포맷팅하고 원하는 소수점 자릿수(정밀도)를 지정하는 데 사용됩니다. 예를 들어 %.3f처럼 작성하면 소수점 셋째 자리까지 표시됩니다.

format() 함수 – 유연한 포맷팅

format() 메서드 역시 문자열을 포맷팅하여 정확한 정밀도를 설정하는 데 사용됩니다. 중괄호 {} 안에 :.4f와 같은 형식 지정자를 넣어 소수점 넷째 자리까지 표현할 수 있으며, % 연산자보다 가독성이 뛰어나 최근에는 더 널리 사용됩니다.

round(a, n) 함수 – 반올림 처리

round() 메서드는 숫자 a를 소수점 n번째 자리까지 반올림하여 반환합니다. 단순히 자릿수를 잘라내는 것이 아니라 반올림 규칙을 적용한다는 점에서 trunc()와 차이가 있습니다.

예제 코드

import math
number = 45.25656324
print('Value upto 3 decimal places is %.3f' %number)
print('Value upto 4 decimal places is {0:.4f}'.format(number))
print('Round Value upto 3 decimal places is ' + str(round(number, 3)))

실행 결과

Value upto 3 decimal places is 45.257
Value upto 4 decimal places is 45.2566
Round Value upto 3 decimal places is 45.257

정리하면, Python에서는 trunc(), ceil(), floor()로 정수 부분을 추출하거나 올림·내림을 수행할 수 있고, % 연산자, format(), round()를 활용하면 원하는 소수점 자릿수만큼 정밀하게 출력하고 계산할 수 있습니다. 상황에 맞는 방법을 선택하면 숫자 데이터를 훨씬 깔끔하고 정확하게 다룰 수 있습니다.