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 에 가서 한번 쓱 - 읽어보면 쉽게 이해가 될 듯 하다!
'Javascript' 카테고리의 다른 글
[TypeScript] try catch 의 e 타입 - unknown (0) | 2024.03.25 |
---|---|
[Javascript] 프로그래머스 - 최대공약수와 최소공배수 (1) | 2024.02.15 |
[Javascript] 백준 11720 - 숫자의 합 (0) | 2024.01.30 |
[Javascript] 백준 2675 - 문자열 반복 (0) | 2024.01.30 |
[Javascript] 백준 2908 - 상수 (2) | 2024.01.30 |