본문 바로가기

알고리즘&코테

[코테 꿀팁] JS가 나타낼 수 있는 수의 범위는?

JS에서는 수를 나타내기 위해 사용하는 타입이 두 가지입니다.

 

1. Number 타입

2. BigInt 타입

 

Number 타입은 기본적으로 1,2,3과 같이 자주 사용되는 수입니다.

 

하지만 코딩 테스트를 진행하는 경우 일반적이지 않고 어마무시하게 큰 수를 다뤄야 할 수 있습니다. 왜냐하면 단순하게 사용되지 않고 곱해지고 더해지는 연산이 들어가기 때문입니다.

 

그렇기에 Number 타입의 범위를 알고, 그 이상의 수가 필요하다면 BigInt를 적절히 사용할 줄 알아야 합니다. Number 타입의 한계를 알아보겠습니다.

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

 

Number에는 최대로 안전한 정수 값을 확인할 수 있는 멤버가 있습니다. 9경 71조 9925억 5474만 991입니다. 9 경이나 되는 경우의 수를 따져야 하는 게 머리가 아픕니다.

 

그렇기 때문에 경우의 수를 9경까지 계산해도 좋지만, 구현한 코드가 맞는 것 같은데 틀렸다는 결과가 나온다면 값의 범위를 한 번 생각해 보고 BigInt로 변경하는 것이 좋을 것 같습니다.

 

마지막으로 BigInt의 특이한 점은 숫자 뒤에 n이 온다는 것입니다. 기존 Number 타입과 구분하기 위해서 필요합니다.

let bigType = 1n;
let default = 1;

 

그렇기에 코딩 테스트에서는 사용할 때 toString()을 통해 문자열로 만들어 n을 없애줘야 오답이 나오지 않습니다.