0
点赞
收藏
分享

微信扫一扫

生成对抗网络(GAN)在AI去衣技术中的创新应用与探索

殇感故事 04-12 13:30 阅读 0

一、核心思想

找到两个字符串中最长的长度,对两个字符串在头位置补0达到相等的长度,相加时注意进位和类型转换,特别考虑当相加到第一位是如果仍然有进位不要忽略。此外,js中允许使用的最大的数字为

console.log("最大数",Number.MAX_SAFE_INTEGER)
//最大数 9007199254740991 位数为16

二、代码实现

/**
 * 大数相加 
 * @param {String} a 第一位大数
 * @param {String} b 第一位大数
 * @return {String} str 返回大数相加结果 
 */
function sum(a,b){
let str = ""
let length = Math.max(a.length,b.length)
a = a.padStart(length,"0")
b = b.padStart(length,"0")
let carry = 0
let result 
for (let i = length - 1; i >= 0; i--) {
 let n = +a[i] + + b[i] + carry
 result = n % 10 
 carry = Math.floor(n/10)
 str = result + str  
}
if (carry) {
  str = 1 + str
}
return str
}
console.log(sum("2342341234124123","7856564389786944"))
//10198905623911067

PS:

其实日常我们可以直接使用BigInt计算大数,但是在面试中肯定会禁掉,所以还是要学习使用字符串处理大数相加问题。

下面补充使用Bigint计算大数相加

如果在一个Number类型的变量后面追加字母n则表示Bigint

let a = 2342341234124123n
let b = 7856564389786944n
let sum1 = String(a+b)
console.log("a+b",sum1)
//a+b 10198905623911067

我们可以发现,结果与使用字符串相加是相等的

举报

相关推荐

0 条评论