[JavaScript] Number

HyeonE·2025년 6월 4일

JS

목록 보기
15/17
post-thumbnail

자바스크립트에서 숫자는 단순한 데이터 타입 그 이상입니다.
숫자 리터럴 외에도 Number 객체를 통한 다양한 조작이 가능하며,
정수/부동소수점/NaN/Infinity와 같은 특별한 값들도 함께 다루어야 합니다.


🔢 1. 자바스크립트의 숫자 타입

자바스크립트에서는 정수와 실수를 구분하지 않고 모두 하나의 number 타입으로 처리합니다.

// 자바스크립트는 IEEE-754 표준의 64비트 부동소수점 숫자 형식을 사용합니다.

typeof 10;     // "number"
typeof 3.14;   // "number"

🧠 2 . Number 객체란?

Number는 숫자 타입을 감싸는 래퍼 객체(wrapper object)입니다.

const numObj = new Number(10);
console.log(typeof numObj);

일반 숫자 리터럴은 number 타입이지만, new Number()를 사용하면 객체가 생성됩니다.
일반적으로는 객체로 생성할 필요 없이 리터럴을 사용하는 것이 더 적절합니다.


✅ 3. Number 관련 특별한 값들

0 / 0;           // NaN
1 / 0;           // Infinity
-1 / 0;          // -Infinity
isNaN('abc');    // true

📌 4. Number 메서드 및 프로퍼티

// 정적 프로퍼티
Number.MAX_VALUE       // 가장 큰 수
Number.MIN_VALUE       // 가장 작은 수 (0에 가까운 수)
Number.POSITIVE_INFINITY
Number.NEGATIVE_INFINITY
Number.NaN             // NaN 값
// 정적 메서드
Number.isNaN(NaN);                 // true
Number.isFinite(100);             // true
Number.isFinite(Infinity);        // false
Number.parseInt("10.5");          // 10
Number.parseFloat("10.5");        // 10.5
// 인스턴스 메서드
const num = 123.456;

num.toFixed(2);    // "123.46" (소수 둘째자리까지)
num.toString();    // "123.456"
num.toExponential(2); // "1.23e+2"
num.toPrecision(5);   // "123.46"

💡 5. 암묵적 변환과 숫자

// 자바스크립트에서는 연산 중 문자열을 숫자로 변환하기도 합니다.
'5' * 2;    // 10
'5' + 2;    // "52" → 문자열 연결
'5' - 2;    // 3

🧪 6. Number 비교의 주의점

// 소수 비교는 오차 범위를 고려해서 처리하는 것이 좋습니다.
0.1 + 0.2 === 0.3; // false
function isEqual(a, b) {
  return Math.abs(a - b) < Number.EPSILON;
}

isEqual(0.1 + 0.2, 0.3); // true

📝 7. 정리

구분설명
숫자 타입하나뿐인 number (정수, 실수 모두 포함)
Number 객체숫자 값을 감싸는 래퍼 객체
NaN수학적으로 정의되지 않은 결과 (Not-a-Number)
Infinity무한대 값 (1 / 0, -1 / 0 등)
주요 메서드toFixed(), toString(), parseInt(), isNaN()
비교 주의부동소수점 연산은 정확하지 않을 수 있음 (0.1 + 0.2)
profile
프론트엔드 개발자가 되고싶은 대학생

0개의 댓글