3일만에 끝내는 HTML, CSS, JS 기초
j17. 자바스크립트 숫자 본문
자바스크립트 숫자
자바스크립트는 한가지 타입의 숫자만 가집니다. 숫자들은 소수점 (decimals) 이 있거나 또는 없을 수 있습니다. 또 아주크거나 너무 작은 숫자는 지수 표기법 (exponent notation) 으로 합니다.var myNumA = 34.00; // 소수점 (decimals) 을 갖는 경우 var myNumB = 34; // 소수점 (decimals) 이 없는 경우 var myNumC = 1e5; // = 100000, 지수 표기법을 사용한 경우 var myNumD = 1e-5; // = 0.00001, 음의 지수 표기법을 사용한 경우
자바스크립트 숫자는 항상 64-비트 (64-bit Floating Point) 부동 소수점 입니다. 다른 프로그래밍 언어와는 달리, 자바스크립트는 숫자를 여러가지 타입으로 정의하지 않습니다. 따라서 integers, short, long, floating-point 등의 타입이 없습니다. 자바스크립트 숫자는 항상 "배 정밀도 부동 소수점 (double precision floating point numbers)" 으로 저장됩니다. 이것은 국제 IEEE 754 표준 규격입니다. 이 형식은 64 비트로 숫자를 저장합니다. 정수 부 (fraction) 는 비트 0 에서 51 까지 이고, 지수부 (exponent) 가 비트 52 에서 62 입니다. 그리고 부호는 비트 63 입니다. 정수 부 (Integers, 소수점이나 지수 표기가 없는 부분) 은 최대 15 자리까지 정밀하게 표현할 수 있습니다. 또 최대 소수점은 17 자리인데, 부동 소수점 아래쪽의 계산이 항상 100% 정확하지는 않을 수도 있습니다.
0x 로 시작하는 숫자 상수 (Numeric constants) 는 16 진수 (hexadecimal) 로 해석합니다.
자바스크립트는, 숫자 앞에 0x 가 온다면, 16 진수 (hexadecimal) 상수 (numeric constants) 로 해석 (interprets) 합니다.<p>0x 로 시작하는 숫자 상수 (Numeric constants) 는 16 진수 (hexadecimal) 로 해석합니다.</p> <p id="hexadecimal1"></p> <script> document.getElementById("hexadecimal1").innerHTML = "0xF = " + 0xF + "<br>" + "0xFF = " + 0xFF + "<br>" + "0x100 = " + 0x100; </script>만일 0 을 숫자 앞에 붙이면 자바스크립트 버전에 따라 이 숫자를 8진수 (octal) 로 인식하기도 하니 주의합니다.
기본적으로 자바스크립트는 10 진수 토대 (base 10 decimals) 로 숫자를 표현합니다. 여기서 toString() 메서드를 사용하여, toString(16) 은 16진수로 변환해주고, toString(8) 은 8진수로, toString(2) 는 이진수 로 바꾸어 줍니다.
무한 (Infinity 또는 -Infinity) 은 자바스크립트가 계산할 수 있는 가장 큰 숫자 바깥으로 나갈 경우 반환하는 값입니다. 또는 0 (zero) 으로 나누려 해도 무한 (Infinity) 을 생성합니다.
NaN 은 숫자 아님 (Not a Number) 이라는 의미인데, 자바스크립트에서 숫자가 아닌 값을 가리키는 단어로 예약 (정의) 되어 있습니다. 숫자가 아닌 문자열을 산술 연산 하려고 하면, NaN (Not a Number, 숫자 아님) 결과가 나올수 있습니다. 그러나, 그 문자열이 숫자 값 형태로 보인다면, 결과를 숫자로 반환해 줍니다. 여기서 자바스크립트 함수 isNaN() 을 사용하여 그 값이 숫자인지 아닌지 판별할 수 있습니다.var myResult = 10 / "2"; // myResult 값은 숫자 5 가 될 것입니다. isNaN(myResult); // myResult 가 숫자 이므로 true 를 반환할 것 같은데 false 를 반환합니다.
숫자 (Numbers) 도 객체 (Objects) 가 될 수 있습니다. 일반적으로 자바스크립트 숫자는 글자 그대로 생성된 (created from literals) 원형 값 (primitive values) 입니다. 예를 들면 변수에 숫자 그대로 대입합니다. var myValPi = 3.1415; 그런데 숫자도 또한 객체 (objects) 로서 정의될 수 있습니다. 이때는 new 키워드를 사용합니다. 예를 들면, var myObjPi = new Number(3.1415); 이때, (myValPi == myObjPi) 은 참 (true) 이 되는데 두 변수의 값은 같기 때문입니다. 그러나, (myValPi === myObjPi) 는 거짓 (false) 이 되는데 자료의 형식까지 같지는 않기 때문입니다. 그런데, 숫자를 객체로 생성하지 않기를 바랍니다. 실행 속도도 느려지게 되고, new 키워드가 코드를 복잡하게 합니다. 결국 원하지 않던 연산 결과를 생성할 수도 있으니 사용하지 않는 것이 좋습니다.
<p id="resultTag1"></p> <p id="resultTag2"></p> <script> var myCal = 10 / "2"; // myResult 값은 숫자 5 가 될 것입니다. var myResult = isNaN(myCal); document.getElementById("resultTag1").innerHTML = myCal; document.getElementById("resultTag2").innerHTML = myResult; </script>
[광고] Udemy 동영상 강의로 보기
'JAVASCRIPT' 카테고리의 다른 글
j21. 자바스크립트 수학연산 객체 (0) | 2016.06.05 |
---|---|
j18. 자바스크립트 숫자 메서드 (0) | 2016.06.05 |
j16. 자바스크립트 문자열 메서드 2/2 (0) | 2016.06.05 |
j15. 자바스크립트 문자열 메서드 1/2 (0) | 2016.06.05 |
j14. 자바스크립트 문자열 (0) | 2016.06.05 |