(JS) Number 래퍼 객체

woong·2022년 10월 26일
0
post-thumbnail

Number객체는 원시 타입 number를 다룰 때 필요한 프로퍼티와 메소드를 제공하는 래퍼(wrapper)객체이다. 변수 또는 객체의 프로퍼티가 숫자를 값으로 가지고 있다면 Number 객체의 생성없이 Number 객체의 프로퍼티와 메소드를 사용할 수 있다.

1. Number 객체 생성

Number 객체는 생성자 함수를 통해 생성할 수 있다.

const num1 = 78;
const num2 = new Number(78); // Number 객체 생성
console.log(num1); // 78
console.log(num2); // [Number: 78]
console.log(typeof num1); // number
console.log(typeof num2); // object

2. Number 프로퍼티

정적인 프로퍼티 (static)로, Number 객체를 생성하지 않아도 Number.프로퍼티이름의 형태로 사용할 수 있다.

  • Number.MAX_VALUE
    → 자바스크립트에서 인식하는 가장 큰 숫자를 반환한다. (1.7976931348623157e+308)
    → 이보다 큰 수는 Infinity.
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
  • Number.MIN_VALUE
    → 자바스크립트에서 인식하는 가장 작은 숫자를 반환한다. (5e-324)
    → 0에 가장 가까운 양수를 나타내어 이보다 작은 수는 0으로 인식.
console.log(Number.MIN_VALUE); // 5e-324
  • Number.MAX_SAFE_INTEGER
    → 안전하게 저장할 수 있는 최대값 (9007199254740991)
    → 이보다 더 큰 수를 넣어도 할당은 되지만, 오차가 발생하는 등 정확하게 보관할 수 없다.
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
  • Number.MIN_SAFE_INTEGER
    → 안전하게 저장 할 수 있는 최소값 (-9007199254740991)
console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
  • Number.NaN
    → 숫자가 아님(Not a Number)을 나타내는 숫자값이다.
console.log(Number.NaN); // NaN
  • Number.POSITIVE_INFINITY
    → 무한대를 반환한다.
console.log(Number.POSITIVE_INFINITY); // Infinity
  • Number.NEGATIVE_INFINITY
    → 음의 무한대를 반환한다.
console.log(Number.NEGATIVE_INFINITY); // -Infinity
  • Number.EPSILON
    → 자바스크립트에서 임의의 수와 그 수보다 큰 수 중 가장 작은 수와의 차이를 나타낸다.
    → 0과 1 사이에서 표현할 수 있는 가장 작은 수
    → 2.220446049250313e-16
console.log(Number.EPSILON); // 2.220446049250313e-16

자바스크립트는 IEE754를 따라서 숫자(실수, 부동소수점)을 표현하고 있다. 이로 인해 2진법으로 변환 시 미세한 오차가 발생하는 구조적인 한계를 가지고 있다.

const num = 0.5 - 0.4; // 0.1이 나와야 하지만 오차 발생
console.log(num); // 0.09999999999999998

이러한 오차를 없애기 위해서 부동소수점의 연산에서는 Number.EPSILON을 사용한 함수를 만들어야 한다.
num1과 num2의 차이가 Number.EPSILON보다 작으면 같은 수로 인정할 수 있다.

function isEqual(num1, num2){
  return Math.abs(num1 - num2) < Number.EPSILON;
}
console.log (isEqual(0.5 - 0.4, 0.1)) // true

3. Number 메소드

  • Number.prototype.toExponential()
    → 지수표기법으로 변환하여 문자열로 반환
    → 지수표기법은 매우 큰 수나 작은 수를 표기할 때 주로 사용하며 10의 n승의 형식으로 표기하는 것을 말한다.
const num = 12345;
console.log(num.toExponential()); // 1.2345e+4
  • Number.prototype.toFixed()
    → 소수점자리(매개변수) 에서 반올림하여 문자열로 반환한다.
const num = 123.45;
console.log(num.toFixed()) // 매개변수가 지정되지 않으면 기본값은 0 // 123
console.log(num.toFixed(1)); // 소수점 첫째자리까지 반올림 // 123.5
  • Number.prototype.toPrecision()
    → 원하는 자릿수까지 (매개변수만큼) 반올림하여 나타낸다.
const num = 123.45678;
console.log(num.toPrecision(5)); // 123.46
console.log(num.toPrecision(6)); // 123.457
  • Number.prototype.toString()
    → 숫자를 문자열로 변환

참조 : https://poiemaweb.com/js-number

0개의 댓글