Innovate With Data

데이터로 더 큰 가치를 제공합니다.

맨땅에 프로그래밍/Python 복기장

Python으로 반올림, 올림, 내림 처리하기(feat. round, ceil, floor)

데이터위자드 2024. 4. 29. 23:50
반응형

Python으로 반올림, 올림, 내림 처리하기(feat. round, ceil, floor)

파이썬으로 데이터를 반올림, 올림, 내림 처리하고 싶다.

 

 안녕하세요? 데이터위자드입니다. 즐거운 데이터 생활 되고 있으신지요?

 

 오늘은 데이터 수치를 정리하다 보면 흔하게 작업하게 되는,

 

 

반올림, 올림, 내림

 

 

기능에 대해서 알아보겠습니다.

 

 

파이썬이 아니더라도, 엑셀로 사무작업을 해보신 분들이라면 익숙한 Fucntion 인, 

 

 

  • Round - 반올림

  • Roundup - 올림

  • Rounddown - 내림

 

 

반올림, 올림, 내림 기능을 사용해 보신 경험이 있으실 것입니다. 오늘은 이 기능을 파이썬 로직으로 구현하는 방법에 대해서 알아보겠습니다.

 

 

과도한 팡션 사용은 부작용을 초래할 수도 있습니다.
과도한 팡션 사용은 부작용을 초래할 수도 있습니다.

 

 

round - 반올림 기능

 

 

먼저 반올림 기능입니다. 엑셀의 그것과 동일한 매써드인 round()입니다.

해당 매써드는 파이썬 내장함수이므로 별도의 추가 라이브러리 없이 구현이 가능합니다.

 

 

Round() method는 엑셀의 그것과 유사하게 다음과 같은 매개변수로 간단하게 구현 가능합니다.

 

 

round(Number, digit)    # round(숫자, 자릿수)

 

 

 

예제는 다음과 같습니다.

 

 

round 함수 예제(1)
round 함수 예제(1)

 

 

임의의 숫자에 대해서 뒤에 매개변수를 증가시킴에 따라 소수점 자릿수가 증가함을 볼 수 있습니다.

 

 

반면, 두 번째 매개변수를 음수(-)로 하게 되면 엑셀에서 기능과 동일하게 정수부(일의 자리, 십의 자리 등)에서 반올림이 이루어지는 것을 보실 수 있습니다.

 

 

round 함수 예제(2)
round 함수 예제(2)

 

 

 

엑셀에서 보던 기능과 그 기전이 동일하므로, 쉽게 이해되실 것이라 생각됩니다.

 

 

다만, 결괏값에서 보듯이 해당 변수는 실수형(Float 혹은 Real) 값으로 반환되기 때문에 정수형 값이 필요한 경우라면,

 

 

int(round(Number, digit))    # Integer 형(정수형)으로 변환

 

 

int() 함수를 이용해 Integer Type으로 형 변환시켜 줄 필요가 있습니다.

 

 

int 함수 예제
int 함수 예제

 

 

다만, round에서 계산식을 괄호로 묶는 과정, int형으로 괄호로 묶는 과정에서 괄호를 실수하는 경우가 간혹 있습니다. (저만 그런 건지도...)

 

 

round 함수 괄호 실수 error 출력 예시
round 함수 괄호 실수 error 출력 예시

 

 

에러 메시지

 

 

TypeError: type tuple doesn't define __round__ method
 
 
가 출력되는 경우가 있으니, 코딩시 주의를 요합니다.
 
 
혹은, round 함수시 두번째 인자 없이,

 

 

round(Number)    # round(숫자)

 

 

로 사용하면 int형으로 반환시킬 수 있습니다. 
단순히 정수형만 필요하다면 이 방법이 조금더 간편할 수 있겠습니다.

 

 

round 함수 예제(3)
round 함수 예제(3)

 

 
 

 

ceil - 올림 기능

 

 

다음으로 올림 기능입니다.

 

엑셀에서는 'RoundUp' 함수로 구현 가능하지만, 파이썬에서는 ceil() 매써드를 이용해서 숫자의 올림기능을 구현할 수 있습니다.

 

다만, 파이썬에서 제공하는 기본함수에는 없고 math 라이브러리를 설치 및 Import 해줘야 합니다.

 

pip install math	#math 라이브러리 설치
import math		#math 라이브러리 가져오기

 

 

 

python 라이브러리 설치는 이전 포스팅에서 자세히 다루었습니다. 참조해 주세요.

 

파이썬 (2) - PIP로 모듈 설치하기

 

파이썬 (2) - PIP로 모듈 설치하기

파이썬(Python) 모듈(라이브러리) 이야기 이전 포스팅에서 파이썬 설치에 대해서 정리하였습니다. (파이썬 설치에 대한 내용은 아래 링크를 참조하시기 바랍니다.) 파이썬 (1) - 파이썬 시작하기 파

datawizard.co.kr

 

 

다음은, 코딩입니다. 

 

math.ceil(Number)    # ceil 함수 예제

 

 

round함수에 비해, 숫자만 입력하게 됩니다. 그리고 결괏값 또한 정수형(Integer type)으로 반환됩니다.

 

math.ceil 함수 예제
math.ceil 함수 예제

 

 

사용법 또한 굉장히 간단합니다. 

 

 

참 쉽죠?
참 쉽죠?

 

 

floor, trunc - 내림 기능

 

 

다음으로 내림 기능입니다.

 

엑셀에서는 'RoundDown' 함수로 구현하는 기능을 파이썬에서는,

 

 

  • math.floor()

  • math.trunc()

  • int()

 

의 3가지 방법으로 구현 가능합니다.

(여기서 floor()와 trunc() 함수는 앞서 소개한 ceil()과 마찬가지로 math 라이브러리가 필요합니다.)

 

 

각각의 방법으로 양수의 실수형 데이터를 처리하면 동일한 결과를 얻을 수 있습니다.

 

3가지 내림 예제 (1)
3가지 내림 예제 (1)

 

 

 

하지만, 음의 실수형 데이터를 처리하면, 조금 다른 결괏값을 볼 수 있는데요.

 

 

3가지 내림 예제 (2)
3가지 내림 예제 (2)

 

 

같은 음수의 데이터를 내림하더라도,

 

  • floor() 함수는 더 (-)가 되는 정수로

  • trunc() 함수와 Int() 함수는 0에 가까운 정수로

 

변환되는데요.

 

 

Floor라는 뜻이 바닥인 만큼, 더 바닥인 쪽으로 간다. 

 

 

라고 이해하시고 활용하시면 되겠습니다.

 

 

바닥에 더 바닥이 있을수 있습니다. @영화 '작전'
바닥에 더 바닥이 있을수 있습니다. @영화 '작전'

 

 

반면, trunc() 함수의 경우는 int() 함수와 동일한 기능을 수행하기 때문에 보통 int()를 더 자주 활용하는 편입니다. (함수명도 3글자라 math.trunc() 보다 더 짧습니다.)

 

 

정리하며,

 

 

오늘은, 데이터 처리를 하면서 자주 사용하게 되는 반올림, 올림, 내림 기능에 대해서 알아보았습니다. 엑셀의 그것에 익숙하신 분들이라면 생소한 함수 때문에 약간은 혼동스러울 수 있을 것이라 생각됩니다.

 

정리해 보자면 다음과 같겠네요.

 

 

기능 method 비고
반올림 round(숫자, 자릿수) 자릿수 지정시 실수형 반환, 자릿수 미지정시 정수형 반환
올림 math.ceil(숫자) 무전기
내림 math.floor(숫자)
math.trunc(숫자)
int(숫자)
음의 실수형 데이터 처리시,
floor는 더 (-)의 방향의 정수로 trunc와 int는 0에 가까운 정수로 반환

 

 

 

 

자주 사용되는 기능인만큼 한 번쯤 정리하고 숙지할 필요가 있으실 것이라 생각됩니다.

 

참고하시어, 즐거운 데이터 생활 되시길 바랍니다.

 

 

* 본 포스팅에서 언급된 라이브러리, 단체는 필자와 무관함을 알립니다.

 

 

 

 

도움이 되셨다면, 왼쪽 아래 '💗' 클릭 부탁드립니다. 감사합니다.

반응형