9.手写JavaScript大数相加问题

本文介绍了如何在JavaScript中使用字符串方法处理大数相加问题,包括padStart函数调整字符串长度和进位处理,并对比了使用BigInt计算大数相加的结果。
摘要由CSDN通过智能技术生成

一、核心思想

找到两个字符串中最长的长度,对两个字符串在头位置补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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值