我正在尝试解决在代码战中看起来很简单的kata,但我似乎做得不好。
指令如下
给定两个整数的字符串表示形式,返回这些整数之和的字符串表示形式。
例如:sumStrings('1','2') // => '3'
整数的字符串表示形式除了十个数字“ 0”至“ 9”之外,将不包含任何字符。
这就是我尝试过的
function sumStrings(a,b) {
return ((+a) + (+b)).toString();
}
但是结果解决了除两个以外的所有问题,这些是我得到的错误
sumStrings('712569312664357328695151392','8100824045303269669937')-预期:'712577413488402631964821329',却得到:'7.125774134884027e + 26'
sumStrings('50095301248058391139327916261','81055900096023504197206408605')-预期:'131151201344081895336534324866',却得到:'1.3115120134408189e + 29'
我似乎不明白问题的根源。任何帮助都会有所帮助。
最佳答案
您输入的值大于int类型的最大值。您可以尝试将代码更改为:
function sumStrings(a,b) {
return ((BigInt(a)) + BigInt(b)).toString();
}
这样,它应该返回正确的值