Javascript 将字符串作为数字求和

Javascript 将字符串作为数字求和,javascript,Javascript,我正在尝试解决一个关于代码战的kata问题,它看起来很简单,但我似乎没有正确地解决它 这方面的说明如下所示 给定两个整数的字符串表示形式,返回这些整数之和的字符串表示形式 例如: sumStrings'1','2'/=>'3' 整数的字符串表示形式将不包含除10个数字0到9之外的任何字符 这就是我尝试过的 function sumStrings(a,b) { return ((+a) + (+b)).toString(); } 但是结果解决了除两个之外的所有问题,这些是我得到的错误 su

我正在尝试解决一个关于代码战的kata问题,它看起来很简单,但我似乎没有正确地解决它

这方面的说明如下所示

给定两个整数的字符串表示形式,返回这些整数之和的字符串表示形式

例如:

sumStrings'1','2'/=>'3'

整数的字符串表示形式将不包含除10个数字0到9之外的任何字符

这就是我尝试过的

function sumStrings(a,b) { 
  return ((+a) + (+b)).toString();
}
但是结果解决了除两个之外的所有问题,这些是我得到的错误

sumStrings'71256931266435732895151392','81008240453032696699937'-预期为'712577413488402631964821329',而改为'7.125774134884027e+26'

sumStrings'50095301248058391139327916261','81055900090623504197206408605'-预期为'131151201344081895336534324866',而不是'1.3115120134408189e+29'


我似乎不明白这些问题是从哪里来的。任何帮助都会有所帮助,谢谢。

问题是常规javascript整数没有足够的空间来存储这么多大的数字,因此它使用指数表示法来保持精度

你能做的就是把每个数字分成几个部分,然后分别相加


这里就是一个这样的例子,问题是常规javascript整数没有足够的空间来存储这么大的数字,所以它使用指数表示法来保持精度

你能做的就是把每个数字分成几个部分,然后分别相加


这里有一个这样的例子

您输入的值大于int type max值。您可以尝试将代码更改为:

 function sumStrings(a,b) { 
  return ((BigInt(a)) + BigInt(b)).toString();
}

这样,它应该返回正确的值

您输入的值大于int type max值。您可以尝试将代码更改为:

 function sumStrings(a,b) { 
  return ((BigInt(a)) + BigInt(b)).toString();
}

通过这种方式,它应该返回正确的值

您可以弹出这些数字,并为下一个数字进行结转

函数adda,b{ var aa=Array.froma,数字, bb=数组。fromb,数字, 结果=[], 进位=0, i=Math.maxa.length,b.length; 而我——{ 进位+=aa.pop | 0+bb.pop | 0; 结果:未移位进位为%10; 进位=算术地板费/10; } 随身携带{ 结果:未移位进位为%10; 进位=算术地板费/10; } 返回result.join; } 控制台.logadd'71256931266435732895151392','81008240453032696699937';
控制台.logadd'50095301248058391139327916261','810559000960623504197206408605' 您可以弹出数字,然后用下一个数字的结转进行收集

函数adda,b{ var aa=Array.froma,数字, bb=数组。fromb,数字, 结果=[], 进位=0, i=Math.maxa.length,b.length; 而我——{ 进位+=aa.pop | 0+bb.pop | 0; 结果:未移位进位为%10; 进位=算术地板费/10; } 随身携带{ 结果:未移位进位为%10; 进位=算术地板费/10; } 返回result.join; } 控制台.logadd'71256931266435732895151392','81008240453032696699937';
控制台.logadd'50095301248058391139327916261','810559000960623504197206408605';类似于这个问题?在本练习中,您需要逐位模拟笔和纸的加法。最简单和最广泛教授的方法是从右边添加列。类似于这个问题吗?在本练习中,您需要逐位模拟笔和纸的加法。最简单和最广泛教授的方法是从右边添加列。这是正确的答案,但不幸的是,他提到的Kata不允许出于某些愚蠢的原因使用BigInt。这是正确的答案,但不幸的是,他提到的Kata不允许出于愚蠢的原因使用BigInt。