- 원시타입 number를 다룰 때 메서드와 프로퍼티를 제공 하는 레퍼 객체이다.
- 생성자 : new Number(value);
- new를 붙이지않으면 원시타입 숫자를 반환한다.
new Number(value); // 기본 문법
var x = new Number(123);
var y = new Number('123');
var z = new Number('str');
console.log(x); // 123
console.log(y); // 123
console.log(z); // NaN
var a = Number('123');
console.log(typeof a, a); // number 123
var b = 123;
var c = new Number(123);
console.log(b == c); // true
console.log(b === c); // false
console.log(typeof b); // number
console.log(typeof c); // object
(1) Number Property
- Number.EPSLON : JavaScript에서 표현할 수 있는 가장 작은 수 약 2의 -52승
- 부동소수점 산술 연산 비교는 정확한 값을 기대하기 어렵기 때문에 EPSLON이 유용하다.
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 == 0.3); // false
function isEqual(a, b){
return Math.abs(a - b) < Number.EPSILON; // Math.abs는 절댓값, 즉 a와 b의 차이가 JavaScript에서 표현할 수 있는 가장 작은 수인 Number.EPSILON보다 작으면 같은 수로 인정할 수 있다.
}
console.log(isEqual(0.1 + 0.2, 0.3)); // true
- Number.MAX_VALUE : JavaScript에서 사용 가능한 가장 큰 수, MAX_VALUE보다 큰 값은 Infinity이다.
- Number.MAX_VALUE : JavaScript에서 사용 가능한 가장 작은 수, 0에 가장 가까운 양수 값, MIN_VALUE보다 작은 숫자는 0으로 변환한다.
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Infinity > Number.MAX_VALUE); // true
console.log(Number.MIN_VALUE); // 5e-324
console.log(Number.MIN_VALUE > 0); // true
- Number.POSITIVE_INFINITY : 양의 무한대를 반환한다.
- Number.NEGATIVE_INFINITY : 음의 무한대를 반환한다.
console.log(Number.POSITIVE_INFINITY) // Infinity
console.log(Number.NEGATIVE_INFINITY) // -Infinity
- Number.NaN : 숫자가 아님을 나타내는 숫자 값이다.
console.log(Number('wangi')); // NaN
console.log(1 * 'string'); // NaN
console.log(typeof NaN); // number
(2) Number Method
- Number.isFinite() : 매개변수에 전달된 값이 정상적인 유한수인지를 검사하여 결과를 boolean으로 반환한다.
- Number.isFinite()와 전역 함수 isFinite()의 차이는 인수를 변환하지 않냐의 차이이다. 따라서 Number.isFinite()에 숫자가 아닌 인수가 주어지면 항상 fasle를 반환한다.
Number.isFinite(value) // 기본 문법
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite('wangi')); // false
console.log(Number.isFinite('123')); // false isFinite(123')은 true
console.log(Number.isFinite(0)); // true
console.log(Number.isFinite(2e64)); // true
console.log(Number.isFinite(null)); // false. isFinite(null)은 true
- Number.isInteger() : 매개변수에 전달된 값이 정수인지를 검사하여 결과를 boolean으로 반환한다.
- 인수를 숫자로 변환하지 않는다.
Number.isInteger(value) // 기본 문법
console.log(Number.isInteger(123)); // true
console.log(Number.isInteger(-123)); // true
console.log(Number.isInteger(5-2)); // true
console.log(Number.isInteger(0)); // true
console.log(Number.isInteger(0.5)); // false
console.log(Number.isInteger('123')); // false
console.log(Number.isInteger(Infinity)); // false
console.log(Number.isInteger(-Infinity)); // false
console.log(Number.isInteger(0 / 0)); // false
- Number.isNaN() : 매개변수에 전달된 값이 NaN인지를 검사하여 결과를 boolean으로 반환한다.
- Number.isNaN()과 isNaN()의 차이는 인수를 변환하지 않냐의 차이이다. isNaN()에 숫자가 아닌 인수가 주어지면 항상 fasle를 반환한다.
Number.isNaN(value) // 기본 문법
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(undefined)); // false isNaN(undefined)은 true
console.log(Number.isNaN({})); // false isNaN({})은 true
console.log(Number.isNaN('wangi')); // false isNaN('wangi')은 true
console.log(Number.isNaN(true)); // false
console.log(Number.isNaN(null)); // false
console.log(Number.isNaN(10)); // false
console.log(Number.isNaN('10')); // false
console.log(Number.isNaN('')); // false
console.log(Number.isNaN(' ')); // false
- Number.isSafeInteger() : 매개변수에 전달된 값이 안전한 정수값인지를 검사하여 결과를 boolean으로 반환한다. 안정한 청수값은 -(253 - 1)와 253 - 1 사이의 정수 값이다. 인수를 숫자로 변환하지 않는다.
Number.isSafeInteger(value) // 기본 문법
console.log(Number.isSafeInteger(123)); // true
console.log(Number.isSafeInteger(1000000000000000)); // true
console.log(Number.isSafeInteger(10000000000000001)); // false
console.log(Number.isSafeInteger(0.5)); // false
console.log(Number.isSafeInteger(Infinity)); // false
console.log(Number.isSafeInteger(0 / 0)); // false
- Number.prototype.toExponential() : 지수 표기법으로 변환하여 문자열로 반환한다.
var a = 12.3456;
console.log(a.toExponential()); // logs 1.23456e+1
console.log(a.toExponential(4)); // logs 1.2345e+1
console.log(a.toExponential(2)); // logs 1.23e+1
console.log(12.3456.toExponential()); // logs 1.23456e+1
console.log(12.toExponential()); // SyntaxError: Invalid or unexpected token
console.log(12 .toExponential()); // logs 7.7e+1
- Number.prototype.toFixed() : 매개변수에 지정된 소수점 자리를 반올림하여 문자열로 반환한다.
var a = 12345.6789;
console.log(a.toFixed()); // '12346' 소숫점 이하 반올림
console.log(a.toFixed(1)); // '12345.7' 소수점 2번째 자리에서 반올림
console.log(a.toFixed(2)); // '12345.68'
console.log(a.toFixed(3)); // '12345.679'
console.log(a.toFixed(6)); // '12345.678900'
- Number.prototype.toPrecision() : 매개변수에 지정된 전체 자릿수까지 반올림하여 문자열로 반환한다.
var a= 12.3456;
console.log(a.toPrecision()); // '12.3456'
console.log(a.toPrecision(1)); // '1e+1' 전체 1자리수로 표현, 나머지 반올림
console.log(a.toPrecision(2)); // '12' 전체 2자리수로 표현, 나머지 반올림
console.log(a.toPrecision(3)); // '12.3' 전체 3자리수로 표현, 나머지 반올림
console.log(a.toPrecision(4)); // '12.35' 전체 4자리수로 표현, 나머지 반올림
- Number.prototype.toString() : 숫자를 문자열로 반환한다.
var a = 10;
console.log(a.toString()); // '10'
console.log((17).toString()); // '17'
console.log(17 .toString()); // '17'
console.log((17.2).toString()); // '17.2'
var b = 16;
console.log(b.toString(2)); // '10000' 2진수로 반환
console.log(b.toString(8)); // '20' 8진수로 반환
console.log(b.toString(16)); // '10' 16진수로 반환
- Number.prototype.valueOf() : Number 객체의 원시 타입 값(primitive value)을 반환한다.
var a = new Number(10);
console.log(typeof a); // object
var b = a.valueOf();
console.log(b); // 10
console.log(typeof b); // number
'JavaScript' 카테고리의 다른 글
[JavaScript] Date (0) | 2023.10.24 |
---|---|
[JavaScript] Math (0) | 2023.10.20 |
[JavaScript]Global Object (1) | 2023.10.19 |
[JavaScript]Built-in Object (0) | 2023.10.19 |
[JavaScript]객체 지향 프로그래밍 (0) | 2023.10.18 |