'Number'에 해당되는 글 1건

  1. 2016.01.25 루아(Lua)의 숫자형

 보통 다른 언어에서는 숫자 자료형이 세분화되어 있다. C++의 예를 들면 byte, short, int, long, float, double 등등 정수냐 실수냐에 따라 또는 표현 범위에 따라 숫자 자료형이 세분화 되어 있으며 JAVA, C# 같은 언어도 마찬가지이다. 반면 루아에서는 그냥 숫자형(number로 표기된다) 하나이고 내부적으로 모든 숫자를 double 형 데이터로 처리한다.


print( type(1) )
print( type(1.1) )
print( type(1.1e34) )
실행결과
number
number
number


print()함수는 표준출력(보통은 화면)을 하는 내부함수이고 type()은 넘겨진 자료의 자료형 반환하는 내부함수이다. 따라서 print( type(x) ) 는 x의 자료형을 출력하는 명령이다. 위에서 정수 1도 number, 실수 1.1도 number, 1.1e34(지수적 표기법으로 1.1x1034을 나타낸다.)도 number이다. 모두 다 동일한 숫자형(number)라는 것을 알 수 있다.

 똑 같은 일을 변수를 이용하여 작성해 보면 다음과 같다.


a = 1 -- 변수 a에 정수 1을 대입
b = 1.1 -- 변수 b에 실수 1.1을 대입
c = 1.1e34 -- 변수 c에 정수 1.1 x 1034 을 대입
print(type(a)) -- ‘number’ 가 출력된다.
print(type(b)) -- ‘number’ 가 출력된다.
print(type(c)) -- ‘number’ 가 출력된다.


이 예에서 보면 a=1 이라고 하면 변수 a에 1을 대입하라는 것이고 b=1.1은 변수 b에 1.1.을, c=1.1e24는 변수 c에 1.1x1034을 대입하라는 것이다. 변수명은 이전 포스트에서 설명한 식별자 규칙에 의해서 만들어져야 한다. print( type(a) )는 변수 a에 담겨진 데이터의 자료형을 출력하라는 명령이 된다. 변수 a에는 1이 들어가 있으므로 number 가 화면에 출력된다.

 이와 같이 루아에서는 숫자 자료형은 하나밖에 없다. 루아는 내부적으로 정수도 double형이고 실수도 double형으로 처리된다. 일견은 메모리 낭비같이 여겨지기도 하지만 현대의 컴퓨팅 환경에서는 크게 중요한 문제는 아니고 이를 통해서 데이터 처리의 단순함을 얻을 수 있다.



Posted by 살레시오
,