최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

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
댓글