-
[표준객체] - Number 객체JavaScript/기본 1 2022. 2. 7. 00:52
- 자바스크립트에서 수 표현
-
// 64비트 부동 소수검 수의 정밀도 var x = 999999999999999; // 15자리 정수부 var y = 9999999999999999; // 16자리 정수부 var z = 0.1 + 0.2; // x: 999999999999999 // y: 10000000000000000 // z: 0.30000000000000004 => 오차 // 정수부는 15자리까지 // 소수부는 17자리까지 유효 -
// 오차를 없애기 위해 정수의 형태로 먼저 변환하여 계산을 수행하고 // 다시 실수의 형태로 재변환 방법 사용 var z = (0.2 * 10 + 0.1 * 10) / 10; // 0.3
-
- 진법 표현
-
var x = 0xAB; // 16진법으로 표현된 10진수 171 var y = 29; // 10진법으로 표현된 10진수 29 x + y; // 200, 모두 10진법으로 자동 변환되어 계산됨 -
var num = 256; num.toString(2); // 2진법으로 변환 : 100000000 num.toString(8); // 8진법으로 변환 : 400 num.tooString(10); // 10진법으로 변환 : 256 num.toString(16); // 16진법으로 변환 : 100 // 2진수로 변환한 값을 문자열로 반환 num.toString(2); // 100000000 // 문자열을 숫자로 나눴기 때문에 자동으로 10진수로 변환되어 산술 연산된 결과값 (num.toString(2) / 2); // 50000000 - toString( )
- 해당 숫자의 진법을 실제로 바꿔주는 것이 아닌,
전달된 진법으로 변환된 형태의 문자열 반환
- 해당 숫자의 진법을 실제로 바꿔주는 것이 아닌,
-
- Infinity
- 양의 무한대 : Infinity
- 음의 무한대 : -Infinity
- 수정할 수 없는 읽기 전용 값
- 어떤 수보다 큰 수로 취급
-
var x = 10 / 0; // 숫자를 0으로 나누면 Infinity반환 var y = Infinity * 1000; // Infinity에 어떠한 수를 산술 연산해도 Infinity반환 var z = 1 / Infinity // Infinity의 역수는 0반환 document.write(x); // Infinity document.write(y); // Infinity document.write(z); // 0
- NaN (Not A Number)
- 숫자가 아니다, 정의되지 않는 값이나 표현할 수 없는 값
-
var x = 100 - "10"; // "10"은 자동으로 숫자로 변환되어 계산됨 var y = 100 - "문자열"; // "문자열"은 숫자로 변환할 수 없기 때문에 NaN반환 var z = 0 / 0; // 0을 0으로 나눌 수 없기 때문에 NaN을 반환 document.write(x); // 90 document.write(y); // NaN document.write(z); //NaN - isNaN( ) => 숫자인지 아닌지 판단
-
var x = 100 * "문자열"; if(isNaN(x)) { // 전달된 값이 숫자인지 아닌지 검사 document.write("변수 x의 값은 숫자가 아닙니다."); } else { document.write("변수 x의 값은 숫자입니다."); } // 변수 x의 값은 숫자가 아닙니다.
-
- null, undefined, NaN, Infinity 비교
- null - object, 아직 '값'이 정해지지 않은 것
- undefined - 하나의 타입, '타입'이 정해지지 않은 것
- NaN - number, '숫자가 아님'을 의미
- Infinity - number, '무한대'를 의미
-
typeof null; // object typeof undefined; // undefined typeof NaN; // number typeof Infinity; // number Boolean(null); // false Boolean(undefined); // false Boolean(NaN); // false Boolean(Infinity); // true Number(null); // 0 Number(undefined); // NaN Number(NaN); // NaN Number(Infinity); // Infinity String(null); // null String(undefined); // undefined String(NaN); // NaN String(Infinity); // Infinity
- Number 객체
- new연산자를 사용해 명시적으로 Number객체를 생성할 수 있다.
- 숫자 값을 감싸고 있는 래퍼(wrapper)객체이다.
-
var x = 100; // 숫자 리터럴 var y = new Number(100); // Number 객체 document.write(x); // 100 document.write(y); // 100 document.write(type x); // number document.write(type y); // object -
var x = 100; // 숫자 리터럴 100 var y = new Number(100); // Number 객체 100 x == y; // 값이 같으므로 true x === y; // 서로 다른 객체이므로 false - new연산자 사용해서 객체를 생성할 땐 많은 추가 연산을 해야한다.
- 가능한 숫자 리터럴을 사용해서 수를 표현하고
- Number객체는 래퍼 객체로만 활용하는 것이 좋다.
'JavaScript > 기본 1' 카테고리의 다른 글
[표준 객체] - Math 객체 (0) 2022.02.10 [표준객체] - Number 메소드 (0) 2022.02.07 [표준객체] - 전역객체와 래퍼객체(wrapper object) (0) 2022.02.06 [객체] - 객체 프로퍼티와 메소드 (0) 2022.02.05 [객체] - 객체 다루기 (this) (0) 2022.02.05 - 자바스크립트에서 수 표현