哪里建设品牌网站,太原软件开发定制,云南企业,英文字体设计网站一、核心思想
找到两个字符串中最长的长度#xff0c;对两个字符串在头位置补0达到相等的长度#xff0c;相加时注意进位和类型转换#xff0c;特别考虑当相加到第一位是如果仍然有进位不要忽略。此外#xff0c;js中允许使用的最大的数字为
console.log(最大数对两个字符串在头位置补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] carryresult 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(ab)
console.log(ab,sum1)
//ab 10198905623911067
我们可以发现结果与使用字符串相加是相等的