Dev/JavaScript

[JavaScript] BigInt

隣席の開発者群 2023. 7. 25. 17:24
반응형

요즘 하반기 공채시즌이 열려서 중고신입 개발자 뽑는 공채에 미친듯이 지원을 하고 있다. 당연히 신입공채기 때문에 코딩테스트에 응시를 해야하는 경우가 대부분이라 요즘 코테 공부에 심혈을 기울이고 있다. 그러다 오늘 생각도 안했던 문제를 발견해서 기록을 남겨둔다. 

 

Number

지금껏 내가 착각하고 있었던게 있는데, Java를 기준으로 생각해서 착각했던것 같다. 다들 알다시피 Int타입에는 메모리적으로 한계가 있다. 이런 한계를 극복하고자 한다면 Long이나 BigDecimal을 사용하는 방향을 채택했었는데 이것만 생각하다보니 자바스크립트의 원시타입중에 하나인 Number는 걍 다 되는 줄 알았다. 왜냐면 숫자를 표현하는 타입이 저거뿐인줄 알았으니까... 근데 놀랍게도 이 Number 타입도 한계가 있다. 

찾아보니,  -9007199254740991 ~ 9007199254740991 까지만 가능하다고 함.

근데 놀랍게도 코테 문제에서 그 이상을 넘어서는 정수를 사용하는게 있어서 찾아보니, BigInt라는 타입이 또 있더라..

 

BigInt

얘 같은 경우엔 BigInt()로 감싸주거나 정수 리터럴 뒤에 n만 붙여주면 쓸 수 있는데, Number와 구분되는 자료형이니 혼용해서 사용할 수 없음을 인지하고 있어야한다. 하지만 일단 동등한 입장에 있긴하고, 연산자도 다 사용할 수 있으니, 만일 Number가 표현할 수 있는 숫자 그 이상을 표현할 생각이라면 이거 써보는 것도 좋을 것 이라고 생각한다.

LIST

'Dev > JavaScript' 카테고리의 다른 글

[JavaScript] Symbol  (0) 2023.07.17
[JavaScript] iterable / iterator  (0) 2023.07.17
[JavaScript] Wrapper Object  (0) 2023.07.13
[JavaScript] ProtoType (2)  (0) 2023.07.13
[JavaScript] ProtoType (1)  (0) 2023.07.05