0
이상의 두 정수가 문자열 a, b
로 주어질 때, a + b
의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
function solution(a, b) {
var answer = '';
return answer;
}
function solution(a, b) {
let sum = Number(a) + Number(b);
return String(sum);
}
solution("18446744073709551615", "287346502836570928366");
기댓값과 다른 숫자가 출력된다.
기댓값 : 305793246910280479981
출력값 : 305793246910280500000
이는 JS 에서 지원하는 숫자의 길이를 넘어섰기 때문에 생기는 오류이다.
function solution(a, b) {
return (BigInt(a) + BigInt(b)).toString();
}
solution("18446744073709551615", "287346502836570928366");
출력값 : 305793246910280479981
BigInt를 알았다면 쉽게 풀 수 있는 문제였다.
BigInt는 길이의 제약 없이 정수를 다룰 수 있게 해주는 숫자형입니다.
JS에서 Number로 표현할 수 있는 범위를 벗어난 경우 0을 붙여서 출력하게 된다.
이를 처리하기 위해서 새로 도입된 숫자 타입이라고 한다.