문제점

프로그래머스 문제를 풀다가 Number 혹은 parseInt로 변환되지 않는 큰 정수를 발견했다.

자바스크립트에서는 안전한 정수의 범위를 넘어가면 부동 소수점 산술을 사용할 때 예상치 못한 결과가 나올 수 있다고 한다.

Javascript는 IEEE 754 표준을 사용하여 숫자를 표현하며, 정밀도에 제한이 있다.

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

해결방법

해결 방법으로는 ES2020에서 도입된 BigInt를 사용할 수 있다.

BigInt?

아주 큰 정수 숫자 표현을 위해 자바스크립트에서 제공하는 제한없는 숫자 타입이다.

javascriptCopy code
function add(a, b) {
  return a + b; // 에러! BigInt로 변환 필요
}

add(123n, 456n); // 올바른 사용