티스토리 뷰
as3.0에서 Number = 부동소수점의 64비트 실수 라고 표현하는데 조금 더 자세히 알아보자.
먼저 부동소수점이라는 표현은 부不 동動 이 아니라 .. 부동(떠 다니는) 뜻이다. 여기에 소수점이라는 표현이 추가되었으므로
떠 다니는 소수점 이라는건데.. 셀수는 정수와는 달리 소수점이 있기 때문에 64비트의 일부는 소수를 표현하는 데 사용해야 한다.
그래서 소수점의 위치를 유연하게 표현할 수 있는 방법으로 지수와 가수를 이용해 실수를 표현하는 것이다.
만일 64비트를 정수 데이터 처럼 표현한다면 최대값은 이 된다.
하지만 지수와 가수를 이용하면 실수의 표현범위가 까지 넓어진다.
64비트 중 맨 앞 비트는 부호를 표시하고, 11 비트는 지수부, 나머지 52비트는 가수부가 된다.
[63] [62][61] ..... [54][53] [52][51][50] .... [4][3][2][1][0]
| | | | |
부호비트 └ 지수부 비트 (11비트) ┘ └ 가수부 비트 (52비트) ┘
그래서 각 파트는 아래 부동 소수점 포맷의 각 파트에 대응된다.
부동소수점 포맷의 장점은 적은 비트 메모리 공간으로 좀 더 폭넓은 범위의 실수를 표현할 수 있다는 것이다.
쉽게 생각해서 메모리 공간이 정해져 있으므로 큰수와 작은 수 모두를 표현하려면 소수점이 자유롭게 이동해야 하므로..
0.1에 10을 곱한 값과 0.1을 10번 더한 값에는 차이가 생긴다.
Number타입의 변수에 0.1 * 10을 하면 결과는 1이지만, 0.1을 10번 더하면 0.99999999999999가 된다.
부동소수점을 이용해서 연산을 할 때는 방법에 따라 결과의 정확도가 달라진다.
조건문 (==)을 체크할때 Math 메서드로 반올림같은 처리를 하든지 int 와 같이 타입변경으로 오류를 없애야한다.
참조 책: 액션스크립트 정석
'■ 플래시 ■ > Adobe ActionScript3.0' 카테고리의 다른 글
14. Arry타입 (0) | 2013.10.19 |
---|---|
13. String 타입 (0) | 2013.10.19 |
11. 함수 (0) | 2013.10.19 |
10. 반복문 (0) | 2013.10.19 |
9. 조건문 (0) | 2013.10.19 |