Flex 2.0과 ActionScript 3.0이 세상에 나온 후, 수많은 이들이 질문하고, 또 그만큼 많이 답변된 내용 중 하나.
바로 ActionScript 3.0의 숫자형이다. (ActionScript 2.0에는 Number만 존재하였던 것으로 기억한다.)
숫자형 데이터 타입
ActionScript 3.0에는 아래와 같은 숫자형 데이터 타입이 있다.
- int - 32비트 Integer. -2,147,483,648 ~ 2,147,483,647의 정수를 표현한다.
- uint - 32비트의 Unsigned Integer, 0~4,294,967,295의 정수를 표현한다.
- Number - IEEE-754에서 명시하는 Double Float(double-precision floating-point). -1022 자리(소수점)부터 ~ 1023 자리의 수까지 표현할 수 있으나, 정확도의 문제를 가진다.1
여기서 주의할 점은, Number 타입의 경우, 부동소수점으로서, 정확히 실수를 가리키는 값이 아닌, 그 실수에 가까운 값을 표현한다는 것이다.
자세히 알아보기
숫자형 데이터 타입의 적절한 사용법
int와 uint, 그리고 Number의 사용에 대해서는 상당히 의견이 분분하다. 특히 많은 프로그래머들은 각각의 성능을 들어 이야기하는 경우가 있는데, 나는 이것이 잘못된 접근 방법이라고 생각한다.
이러한 데이터 타입의 선택이 성능 상 문제가 될 가능성은 매우 낮을뿐아니라, 문제가 발생하기도 전에 퍼포먼스 튜닝을 먼저 진행하는 것은 바람직하지 못하다.4
개인적인 경험담
그렇기에, 숫자형 데이터 타입은, 각각의 용도에 맞게, 적절히 사용하는 것이 가장 중요하다.
즉, -21억~21억의 정수를 표현하기 위해서는 int를, 42억 이하의 0보다 큰 정수를 표현하기 위해서는 uint를, 그리고 그 범위 밖의 정수 또는 소수점을 포함한 수 중, 약간의 정확도 차이가 문제가 되지 않는 수를 표현하기 위해서는 Number를 사용하는 것이 좋다.
만약, 전혀 오차를 허용하지 않는, int, uint 범위 밖의 수를 표현하기 위해서는 fixed-point를 지원하는 별도의 라이브러리를 사용해야하는데, 그에 대해서는 추후에 기회가 되면 추가로 포스팅하겠다.
Related Post
See Also
'Adobe Flash Platform > Flex' 카테고리의 다른 글
| 커스텀 메타데이터 태그 (22) | 2009/11/26 |
|---|---|
| FlexUnit 4, Ant Task 지원 (4) | 2009/11/26 |
| int와 uint, 그리고 Number (2) | 2009/11/23 |
| [소식] Geolocation 및 Accelerometer - Flash Player 10.1 (4) | 2009/11/21 |
| Flash Player 10.1, 이제 Mac에서도 마우스 휠을 지원한다! (8) | 2009/11/18 |
| Mustella, Flex를 위한 테스팅 프레임워크 (0) | 2008/10/14 |




댓글을 달아 주세요
애시당초 전 발단이 된 gskinner의 글부터 전부 말이 안되는 가쉽꺼리라 보고 있습니다.
그걸 맞는 얘기처럼 배포하는 블로거들도 문제고..
var a:int;
a = 30/7;
이란 코드에서 정수인 a에게 정수가 아닌 나누기를 할당하는 까닭은 누가봐도... 4를 얻기 위함이겠죠.
그럼 비교를
var a:Number;
a = int( 30/7 );
과 해야 정상이겠죠 ^^ 그러고도 Number가 빠르다는 소리를 할지 들어봐야겠습니다만..
음. 저는, Skinner가 제공한 정보 자체의 가치는 매우 높다고 생각합니다. (C나 어셈블리에 이해가 있는 개발자라면, 대부분은 int가 Number보다 빠를 것이라 생각하고 있었을 것입니다.)
하지만, 읽는 이들이 이를 해석함에 있어, (제 판단 기준에 의하면) 잘못된 결론을 도출한 사례가 많았고, 그것보다도 더 큰 문제는, 전문가들 중에 이를 바로 잡아주는 사람이 없었다는 것이라 생각합니다.
잘못된 사상이 돌 때, 이를 바로 잡아주는 것이 전문가들의 역할인데, 그러한 기능을 하는 주체가 없었다는 것이 가장 아쉽습니다. (물론, 윗 글에 밝힌 제 생각이 타당하다는 가정 하에 ㅎㅎ)