IDL/Data Type & Format

실수를 정수로 변환하는 방법 (FIX, ROUND, CEIL, FLOOR)

이상우_idl 2017. 10. 26. 22:00
728x90
반응형

우리가 작업을 하다보면 데이터 값들에 대하여 자료형 변환(Type Conversion)을 해야 하는 경우가 종종 있습니다. 물론 형변환에는 여러가지 경우들이 있겠지만, 오늘은 실수를 정수로 변환하는 방법에 촛점을 맞춰 소개해 보겠습니다. IDL에서 이러한 목적으로 사용할 수있는 내장함수들은 FIX, ROUND, CEIL, FLOOR 등 총 네가지입니다. 사실 IDL 도움말에서 Routines (by Topic) -> Type Conversion 섹션을 보면 이들 중 FIX 하나만 소개가 되어 있긴 하지만, 실제로는 위의 네가지 함수들이 지원됩니다. 물론 각각 기능은 조금씩 다릅니다. 하나씩 살펴봅시다.


먼저 FIX 함수는 실수에서 소수점 부분을 아예 제거하는 역할을 한다고 보면 됩니다. 사용 예제는 다음과 같습니다.


IDL> PRINT, FIX(5.3)

       5

IDL> PRINT, FIX(7.8)

       7


이와 같이 FIX 함수는 소수점 및 그 이하를 무조건 제거하기 때문에 반올림은 전혀 하지 않습니다. 만약에 소수점 이하의 값을 고려하여 반올림을 한 정수를 얻고자 한다면 ROUND 함수를 사용하면 됩니다. 이 함수를 사용하면 소수점 이하가 0.5 이상이면 반올림을 하게 됩니다. 사용 예제를 보면 다음과 같습니다.


IDL> PRINT, ROUND(5.3)

           5

IDL> PRINT, ROUND(7.8)

           8

IDL> PRINT, ROUND(7.50)

           8

IDL> PRINT, ROUND(7.49)

           7


이제 CEIL, FLOOR 함수가 남는데 그 명칭을 보면 각각의 역할에 대하여 짐작이 가실 수도 있습니다. CEIL 함수는 명칭의 뜻 자체가 "천장"인데, 소수점 이하의 값에 관계없이 그 숫자보다 크거나 같은 정수를 돌려주는 역할을 합니다. 사용 예제를 보면 다음과 같습니다.


IDL> PRINT, CEIL(5.3)

           6

IDL> PRINT, CEIL(7.8)

           8

IDL> PRINT, CEIL(7.0)

           7

IDL> PRINT, CEIL(7.01)

           8


FLOOR 함수는 명칭의 뜻 자체가 "바닥"인데, 소수점 이하의 값에 관계없이 그 숫자보다 작거나 같은 정수를 돌려주는 역할을 합니다. 따라서 실질적으로는 FLOOR와 FIX는 거의 유사한 역할을 합니다. FLOOR 함수의 사용 예제는 다음과 같습니다.


IDL> PRINT, FLOOR(5.3)

           5

IDL> PRINT, FLOOR(7.8)

           7

IDL> PRINT, FLOOR(7.99)

           7

IDL> PRINT, FLOOR(8.00)

           8


이와 같이 실수를 정수로 변환하는데 있어서 이러한 네가지 종류의 내장함수들을 사용할 수 있다는 점을 알아두시면 여러모로 도움이 될 것 같습니다.

반응형