본문 바로가기
JavaScript

[JavaScript]Number

by eddypark 2023. 10. 20.

- 원시타입 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