본문 바로가기

언어/Javascript

[ 자바스크립트 / JavaScript ] 숫자 다루기

반응형

JavaScript에서 Number 타입은 숫자를 나타내기 위한 기본 데이터 타입입니다. 이 타입은 정수와 부동 소수점 숫자를 모두 포함하며, 64비트 부동 소수점 형식을 따릅니다. JavaScript의 숫자 타입은 매우 유연하고 다양한 상황에서 사용될 수 있지만, 특정한 특성과 제한 사항도 있습니다.

JavaScript의 숫자 타입 (Number)

JavaScript의 Number 타입은 IEEE 754 표준의 64비트 부동 소수점 형식을 사용하여 숫자를 저장합니다. 이는 다음과 같은 다양한 숫자 표현을 포함합니다:

  1. 정수:
    • 0, 양의 정수, 음의 정수를 포함합니다. 
    • let positiveInteger = 42; let negativeInteger = -42; let zero = 0;
  2. 부동 소수점:
    • 소수점이 포함된 실수를 나타냅니다.
      let decimal = 3.14;
      let negativeDecimal = -2.718;
  3. 지수 표기법:
    • 매우 크거나 작은 숫자를 지수 표기법으로 표현할 수 있습니다.
      let largeNumber = 1.23e5;   // 1.23 x 10^5 = 123000
      let smallNumber = 1.23e-5;  // 1.23 x 10^-5 = 0.0000123
  4. 특수 숫자 값:
    • Infinity, -Infinity, NaN (Not-a-Number)와 같은 특별한 값도 포함합니다.
      let infinite = Infinity;
      let negativeInfinite = -Infinity;
      let notANumber = NaN;

숫자 타입의 특성

  1. 정밀도:
    • JavaScript의 숫자는 64비트 부동 소수점 형식을 사용하므로 정밀도에 제한이 있습니다. 이는 특히 큰 정수나 매우 작은 소수점 숫자를 다룰 때 중요합니다.
    • 부동 소수점 연산의 한계로 인해, 작은 숫자 연산에서 부정확성이 발생할 수 있습니다.
      console.log(0.1 + 0.2);  // 출력: 0.30000000000000004
  2. 정확한 정수 표현:
    • JavaScript는 정수를 정확하게 표현할 수 있는 최대 한계를 가지고 있습니다. 안전한 정수 범위는 -2^53 ~ 2^53 - 1 입니다.
      console.log(Number.MAX_SAFE_INTEGER); // 출력: 9007199254740991
      console.log(Number.MIN_SAFE_INTEGER); // 출력: -9007199254740991
  3. InfinityNaN:
    • Infinity는 너무 큰 숫자 연산 결과를 나타내고, NaN은 숫자가 아닌 값을 나타냅니다.
      console.log(1 / 0);      // 출력: Infinity
      console.log(0 / 0);      // 출력: NaN
      console.log('a' * 2);    // 출력: NaN
  4. 정확한 큰 정수 표현:
    • 숫자에 n을 붙여 표현합니다.
    • 큰 정수를 정확하게 표현하기 위해 JavaScript는 BigInt 타입을 제공합니다. Number 타입과는 달리 BigInt는 정밀도의 손실 없이 매우 큰 정수를 처리할 수 있습니다.
      let bigInt = 1234567890123456789012345678901234567890n;
      console.log(bigInt);  // 출력: 1234567890123456789012345678901234567890n

숫자와 관련된 내장 함수와 객체

JavaScript는 숫자를 다루기 위한 다양한 내장 함수와 객체를 제공합니다.

  1. Math 객체:
    • Math 객체는 수학 연산을 위한 다양한 메서드를 제공합니다.
      console.log(Math.PI);            // 출력: 3.141592653589793
      console.log(Math.sqrt(16));      // 출력: 4
      console.log(Math.random());      // 출력: 0과 1 사이의 난수
      console.log(Math.floor(4.7));    // 출력: 4
      console.log(Math.ceil(4.2));     // 출력: 5
  2. Number 객체:
    • Number 객체는 숫자에 대한 유용한 상수와 메서드를 제공합니다.
      console.log(Number.MAX_VALUE);          // 출력: 1.7976931348623157e+308
      console.log(Number.MIN_VALUE);          // 출력: 5e-324
      console.log(Number.isFinite(100));      // 출력: true
      console.log(Number.isNaN(NaN));         // 출력: true
  3. parseIntparseFloat 함수:
    • parseIntparseFloat는 문자열을 숫자로 변환하는 함수입니다.
      console.log(parseInt('123'));      // 출력: 123
      console.log(parseFloat('123.45')); // 출력: 123.45
  4. toFixedtoPrecision 메서드:
    • 숫자를 특정 자릿수까지 포맷팅할 수 있는 메서드입니다.
      let num = 123.456;
      console.log(num.toFixed(2));       // 출력: 123.46
      console.log(num.toPrecision(4));   // 출력: 123.5

숫자 연산

JavaScript는 다양한 산술 연산을 지원합니다.

  1. 기본 산술 연산:
    • 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%), 지수(**) 연산이 가능합니다.
      let a = 10;
      let b = 3;
      console.log(a + b);    // 출력: 13
      console.log(a - b);    // 출력: 7
      console.log(a * b);    // 출력: 30
      console.log(a / b);    // 출력: 3.3333333333333335
      console.log(a % b);    // 출력: 1
      console.log(a ** b);   // 출력: 1000
  2. 증가(++) 및 감소(--) 연산자:
    • 변수의 값을 1씩 증가 또는 감소시킵니다.
      let x = 5;
      x++;
      console.log(x);    // 출력: 6
      x--;
      console.log(x);    // 출력: 5
  3. 복합 할당 연산자:
    • +=, -=, *=, /=, %=, **= 연산자가 지원됩니다.
      let y = 10;
      y += 5;  // y = y + 5
      console.log(y);    // 출력: 15
      y *= 2;  // y = y * 2
      console.log(y);    // 출력: 30

숫자 비교

JavaScript는 숫자의 비교를 위해 다양한 비교 연산자를 제공합니다.

  1. == (동등 연산자):
    • 값만 비교합니다.
      console.log(5 == '5');  // 출력: true
  2. === (엄격 동등 연산자):
    • 값과 타입을 모두 비교합니다.
      console.log(5 === '5');  // 출력: false
  3. != (부등 연산자):
    • 값만 비교하여 다르면 true를 반환합니다.
      console.log(5 != '5');  // 출력: false
  4. !== (엄격 부등 연산자):
    • 값과 타입을 모두 비교하여 다르면 true를 반환합니다.
      console.log(5 !== '5');  // 출력: true
  5. 크기 비교 연산자:
    • >, <, >=, <= 연산자를 사용하여 크기를 비교합니다.
      console.log(10 > 5);   // 출력: true
      console.log(10 < 5);   // 출력: false
      console.log(10 >= 10); // 출력: true
      console.log(10 <= 10); // 출력: true

숫자 타입 변환

JavaScript에서는 숫자를 다른 타입으로 변환하거나, 다른 타입을 숫자로 변환할 수 있는 다양한 방법이 있습니다.

  1. 문자열을 숫자로 변환:
    • Number(), parseInt(), parseFloat()를 사용하여 문자열을 숫자로 변환할 수 있습니다.
      let str = "123.45";
      console.log(Number(str)); // 출력: 123.45
      console.log(parseInt(str)); // 출력: 123
      console.log(parseFloat(str)); // 출력: 123.45
       
  2. 숫자를 문자열로 변환:
    • `String()`, `toString()`을 사용하여 숫자를 문자열로 변환할 수 있습니다
      let str = "123.45";
      console.log(Number(str)); // 출력: 123.45
      console.log(parseInt(str)); // 출력: 123
      console.log(parseFloat(str)); // 출력: 123.45

결론

JavaScript의 Number 타입은 매우 유연하고 강력한 기능을 제공하며, 다양한 숫자 연산과 표현을 지원합니다. 하지만 부동 소수점 연산의 특성과 정밀도 제한을 이해하고 이를 염두에 두고 사용하는 것이 중요합니다. JavaScript에서 제공하는 다양한 내장 함수와 메서드를 활용하면 숫자 데이터를 효과적으로 다룰 수 있습니다.

 

 

반응형