Javascript

[Javascript] 형변환 - Number, BigInt

eulBlue 2024. 2. 14. 18:51

https://school.programmers.co.kr/learn/courses/30/lessons/181846

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

프로그래머스 문제를 풀고있다가 "287346502836570928366"  를 숫자로 바꿔주기 위해 Number(b) 를 사용하니까

 287346502836570928366 인 값이 287346502836570900000 로 출력이 되었다.

Number 의 숫자 범위는 다음과 같다.

const biggestInt = Number.MAX_SAFE_INTEGER; //  (2**53 - 1) =>  9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER; // -(2**53 - 1) => -9007199254740991

// 출처 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number

그러다 보니까 형변환이 제대로 이루어 지지않은건데 이를 해결하기 위해서는 Number 가 아닌 BigInt 를 사용해서

변환을 하면 된다.

BigInt(b)

BigInt 의 숫자 범위는 다음과 같다.

const biggestInt = +9,223,372,036,854,775,807
const smallestInt = -9,223,372,036,854,775,808

출처 : https://www.cubrid.org/manual/ko/9.3.0/sql/datatype.html

아직 Number 숫자범위를 넘어가는 데이터를 다뤄본적도 없다 보니 BigInt 가 생소했다 보니 발생한 이슈인 것 같다...

 

MDN 에 가서 한번 쓱 - 읽어보면 쉽게 이해가 될 듯 하다!