[JavaScript] MIN_SAFE_INTEGER와 MAX_SAFE_INTEGER

tacowasabii·2024년 6월 22일

JavaScript

목록 보기
7/15
post-thumbnail

자바스크립트는 숫자를 표현하기 위해 IEEE 754 표준을 따르는 64비트 부동 소수점 숫자 형식을 사용한다. 이 형식은 매우 큰 숫자와 매우 작은 숫자를 표현할 수 있지만, 모든 숫자가 정확하게 표현되는 것은 아니다. 특히, 정수 연산에서 정확성을 보장하기 위해 안전한 범위가 정의되어 있다. 이 범위는 Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER 상수로 나타낸다.


MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGER는 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수다. 이 값은 2^53 - 1로, 숫자로는 9,007,199,254,740,991이다. 이 값보다 큰 정수는 부동 소수점 표현의 한계로 인해 정확성이 보장되지 않는다.

console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991

MIN_SAFE_INTEGER

Number.MIN_SAFE_INTEGER는 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수다. 이 값은 -(2^53 - 1)로, 숫자로는 -9,007,199,254,740,991이다. 이 값보다 작은 정수도 부동 소수점 표현의 한계로 인해 정확성이 보장되지 않는다.

console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991

안전한 정수란?

안전한 정수란, 부동 소수점 산술을 사용하여 정확하게 표현할 수 있는 정수를 의미한다. 다시 말해, 안전한 정수는 어떤 다른 정수와도 혼동되지 않는 정확한 값이다. 예를 들어, Number.MAX_SAFE_INTEGER + 1Number.MAX_SAFE_INTEGER + 2는 부동 소수점 표현의 한계로 인해 같은 값을 가질 수 있다. 따라서 이 범위를 벗어난 정수 연산은 신뢰할 수 없다.

console.log(Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2); // true

안전한 정수 확인 방법

자바스크립트는 숫자가 안전한 정수인지 확인할 수 있는 방법을 제공한다. Number.isSafeInteger() 메서드를 사용하면 숫자가 MIN_SAFE_INTEGERMAX_SAFE_INTEGER 사이에 있는지 확인할 수 있다.

console.log(Number.isSafeInteger(10)); // true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)); // true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)); // false
console.log(Number.isSafeInteger(1.5)); // false

알고리즘에서 최대 최소 비교에 활용하기

알고리즘에서 최대값과 최소값을 비교할 때 MIN_SAFE_INTEGERMAX_SAFE_INTEGER를 유용하게 활용할 수 있다. 예를 들어, 배열에서 최대값과 최소값을 찾는 알고리즘을 작성할 때 초기값으로 사용할 수 있다.

function findMinMax(arr) {
  let min = Number.MAX_SAFE_INTEGER;
  let max = Number.MIN_SAFE_INTEGER;

  for (let num of arr) {
    if (num < min) {
      min = num;
    }
    if (num > max) {
      max = num;
    }
  }

  return { min, max };
}

const numbers = [5, 17, 23, -5, 0, 89, -100];
const result = findMinMax(numbers);
console.log(result); // { min: -100, max: 89 }

이처럼 MIN_SAFE_INTEGERMAX_SAFE_INTEGER는 알고리즘에서 최대값과 최소값을 비교할 때 초기값으로 사용하여 코드를 간결하고 명확하게 작성할 수 있다.

profile
LG CNS 클라우드 엔지니어 / 웹 프론트엔드 개발자

0개의 댓글