javascript 간단 질문

peccavi의 이미지

안녕하세요.
javascript 간단 질문입니다.

<script language="javascript">
document.write( Math.pow(2, 54) );
</script>

ASP로 돌리는 페이지에서, 위 코드 결과는 18014398509481984 로 정상적으로 나오는데요

54를 55로 변경하면(55제곱) 36028797018963970 이렇게 뒤 2자리가 변형되서 나오네요.

원래 값(36028797018963968)으로 보이게 하려면 어찌해야 하나요.

자바스크립트 구경도 못해보고 살던지라.. 설명좀 부탁드리겠습니다.

hys545의 이미지

http://www.cadvance.org/?leftmenu=doc/include/total_menu.asp&mainpage=doc/java/object/math_object.asp
에서 테스트해본 결과

IE6하고 파폭에서는 XXX70으로 나옴

크롬도 XXX70
사파리도 XXX70
심지어 네이버나 구글 계산기에서도 XX70

윈도우 계산기의 공학모드에서만 제대로 나옴
즐린

즐린

Hyun의 이미지

부동소수점 연산의 자릿수가 넘어가서 생기는 문제가 아닐까요?
http://en.wikipedia.org/wiki/Floating_point#Range_of_floating-point_numbers

On a typical computer system, a 'double precision' (64-bit) binary floating-point number has a coefficient of 53 bits (one of which is implied), an exponent of 11 bits, and one sign bit.

coefficient가 53비트라고 하네요...

나도 세벌식을 씁니다
peccavi의 이미지

두분 답변 감사합니다. 좀더 연구해 봐야겠네요. ^^

----
jai guru deva om...

----
jai guru deva om...