프로그래머스 문제를 풀다가 두 수의 합을 구하는 문제를 풀게되었는데
18446744073709551615 + 287346502836570928366
결과가
305793246910280500000
이런식으로 이상하게 나와서 문제를 살펴보니
Number는 가질 수 있는 가장 큰 값은 1.8E308 이며, 그보다 더 큰 값은 특별한 Number 상수인 Infinity으로 대체가 된다고 한다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number
그래서 더 큰 수를 담을 수있는 게 무엇이 있을까 찾아보던 중
BigInt라는 내장 객체를 찾게되었다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/BigInt
BigInt 는 Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체라고 나와있다.
해당 객체를 이용해서 계산을 진행해보니
BigInt(a)+BigInt(b)
305793246910280479981
정상적으로 계산이 완료되었다.