본문 바로가기

부동소수점 e에 대해서...

매우 큰 수(양수 또는 음수)를 부동소수점으로 표현할 때는 E혹은 e를 이용하여 숫자에 지수를 추가할 수 있다. 지수가 있는 숫자 값은 E 앞에 있는 숫자에 10을 지수번 만큼 곱한 값이다.

 

12e2 라면, 1200이 된다. 이유는 10에 2승은 100이고, 100에 12를 곱하니 말이다.

143E-3 이라면, 0.143이 된다. 이유는 10에 -3승은 0.001이고, 여기에 143을 곱하니 말이다. 

이런 부동소수점은 과학 분야에서 사용되는데 수에 약하다면, 이렇게 이해하면 쉽다.

지수가 양수이면 그 수만큼 소수점을 오른쪽으로 이동시키고, 음수라면 그 수만큼 왼쪽으로 이동하면 된다. 위 예를 다시 보면, 

12e2는 지수 뒤에 양수 2가 붙었으니 그 수만큼 소수점을 오른쪽으로 이동하면 1200이 된다.

143E-3은 지수 뒤에 음수 -3이 붙었으니 그 수만큼 왼쪽으로 소수점을 이동하면 0.143이 된다. 

부동소수점을 사용하는 경우, 무한소수가 발생할 수 있으므로 정수형으로 만들어 주는 함수(Math.round/Math.ceil/Math.floor)를 이용하는게 좋다. 

참고 : 콜린무크 창시자~ 액션스크립트

 부동소수점 표기 / 자연로그 E 

플래시에서는 미세하게 소수점 이하까지 체크를 하기 때문에 정밀한 수치로 모션을 적용할 때의 부드러운 움직임이나 3D의 입체적인 표현을 위해서는 부동소수점을 이용합니다. 자세한 내용은 물리나 수학적 지식이 필요합니다. -,.-;;
그.
래.
서.
간단하게 설명하겠습니다. 실은 저도 깊숙히는 모릅니다. ^^;; 

물리나 수학적 혹은 과학쪽에서 정밀한 수에 표현을 위해 부동소수점을 사용합니다.
종종 입체적인 움직임나 모션의 아주 세밀한 부드러움을 표현한 로직에서 1.000000E-001 이나 혹은 2.000000E-001 처럼 부동소수점으로 표현하는 스크립트를 만나게됩니다.

모르면 아주 난감하겠죠? ^^; 

플래시 액션창에서 이렇게 적어보세요.

trace( 1.000000E-001); 혹은 trace(2.000000E-001); 

어떤 결과가 나오나요? 결과는 0.1, 0.2가 나오시나요?
그렇다면 이처럼 간단한 소수점 표현을 왜 저리 어렵게 표현할까 하시겠죠?
딱 떨어지는 값이라면 0.1처럼 직접 입력하셔도 되지만 미세한 소수점 이하의 표현이 필요한 경우 자연로그(E)를 사용해야 합니다.

자, 이번에는 플래시 액션창에 이렇게 적어보세요. 

trace(Math.E)  

결과는 2.71828182845905 이라는 수를 반환합니다.
이처럼 자연로그 'E'를 사용하면 복리계산을 할 수 있다네요. 복리계산에 대한선 저도 무지해서.. ^^;;
아무튼, 다시 정리해 보자면, 

부동소수점에 대한 정의를 보면, "부동 소수점 방식은 과학계산에서 흔히 쓰이는 방식으로 가수부와 지수부를 e또는 E로 분리하여 표기하는 방식이다."라고 되어 있습니다. 결국, 소수점 이하를 정확하게 0000으로 맞추기 위해서 지수표현식을 쓰고 있습니다.  

예를들면, 플래시 액션창에 이렇게 적어보세요. 

trace(2.2E+001) 

결과는 22를 반환하게되는데 여기서 자연로그 'E'뒤에 붙은 001은 10의 1승을 의미하며, 만약 002가 되면 10의 2승이 됩니다. 이해가 좀 되시나요? 

그렇다면 중요한 결론, 이번에 사용된 로직에서 굳이 부동소수점 방식으로 적용해야 되나요?
결론은 아니죠~ 그냥 0.1이라고 표현해도 전체로직에는 아무런 영향을 미치지 않습니다.
물론 아주 세밀한 움직을 표현하고자 하면 써도 무방하지만요.

출처 - http://djanmode.blog.me/100045588537