본문 바로가기

프로그래밍 언어/자바스크립트

JavaScript의 number 타입, 기본부터 고급까지

JavaScript의 number 타입, 기본부터 고급까지

JavaScript에서 숫자는 프로그래밍의 핵심 데이터 타입 중 하나로, 다양한 연산과 데이터 처리에 사용됩니다. 이 글에서는 number 타입의 정의, 주요 특징, 실무 활용법, 그리고 숫자 연산에서 발생할 수 있는 문제를 해결하는 방법까지 단계별로 살펴봅니다. JavaScript의 number 타입을 완벽히 이해하여 더 견고하고 효율적인 코드를 작성해 보세요.

 

 

목차

  1. number 타입이란 무엇인가?
  2. 기본 숫자 연산
  3. NaN과 Infinity
  4. 숫자 정밀도와 안전한 연산
  5. Math 객체를 활용한 고급 연산
  6. 숫자 타입 변환과 암묵적 변환
  7. 실무에서의 활용 예제

 

1. number 타입이란 무엇인가?

JavaScript에서 number 타입은 숫자를 나타내는 유일한 데이터 타입입니다. 이는 정수와 실수를 모두 포함하며, 숫자 연산을 단순하고 일관되게 처리할 수 있습니다.

  • JavaScript의 숫자는 64비트 IEEE 754 부동소수점 형식으로 표현됩니다.
  • 숫자는 Number 객체로 감싸지지 않은 기본형(primitive type)입니다.
let num1 = 42;  // 정수
let num2 = 3.14; // 실수
console.log(typeof num1); // 출력: "number"

 

 

 

2. 기본 숫자 연산

JavaScript는 기본적인 사칙연산과 모듈로 연산을 제공합니다. 연산자 사용은 직관적이며, 추가적인 연산 기능은 Math 객체를 통해 제공합니다.

  • 덧셈: +
  • 뺄셈: -
  • 곱셈: *
  • 나눗셈: /
  • 나머지: %
console.log(10 + 5);  // 15
console.log(10 - 5);  // 5
console.log(10 * 5);  // 50
console.log(10 / 5);  // 2
console.log(10 % 3);  // 1

 

 

 

3. NaN과 Infinity

JavaScript의 number 타입은 특수한 값인 NaNInfinity를 포함합니다. 이 값들은 연산 중 특정 상황에서 나타날 수 있습니다.

  • NaN: "Not-a-Number"의 약자로, 숫자로 간주할 수 없는 값을 나타냅니다.
  • Infinity: 숫자가 양의 무한대 또는 음의 무한대를 나타냅니다.

예시:

console.log(0 / 0);  // NaN
console.log(1 / 0);  // Infinity

 

 

 

4. 숫자 정밀도와 안전한 연산

JavaScript의 부동소수점 표현 방식으로 인해 정밀도 문제가 발생할 수 있습니다. 예를 들어, 0.1과 0.2를 더하면 0.3이 아닌 0.30000000000000004가 출력됩니다.

정밀도 문제를 해결하는 방법:

  1. 숫자를 정수로 변환한 후 계산
  2. toFixed() 메서드 사용
let result = (0.1 + 0.2).toFixed(2);
console.log(result);  // "0.30"

 

 

 

 

5. Math 객체를 활용한 고급 연산

Math 객체는 고급 수학적 계산을 지원합니다. 주요 메서드는 다음과 같습니다:

메서드 설명
Math.round() 가장 가까운 정수로 반올림
Math.sqrt() 제곱근 계산

 

 

 

6. 숫자 타입 변환과 암묵적 변환

JavaScript에서는 숫자 타입 간 변환이 명시적 또는 암묵적으로 발생합니다.

  • 명시적 변환: Number()를 사용하여 변환
  • 암묵적 변환: 문자열을 숫자로 자동 변환

 

 

 

7. 실무에서의 활용 예제

숫자는 데이터 처리, 계산, 검증 등의 작업에서 자주 사용됩니다.

function calculateTotal(prices) {
    return prices.reduce((sum, price) => sum + price, 0);
}
console.log(calculateTotal([10.99, 20.00, 5.50])); // 36.49