当两个数的值超出int类型最大值时相加就会产生精度丢失 但是如果是字符串是不会丢失精度的 所以可以从个位开始按位想加最后拼起来文章来源地址https://www.toymoban.com/news/detail-575747.html
function bigIntAdd(x, y) {
const len = Math.max(x.length, y.length) // 取较长的数为要补0的长度
// 将数的位数对齐
x = x.padStart(len, '0')
y = y.padStart(len, '0')
let flag = '0' // 记录每个位相加时要进的位
const queue = [] // 存储结果
// 倒序从个位开始逐位相加
for (let i = len - 1; i >= 0; i--) {
const charX = x.charAt(i)
const charY = y.charAt(i)
// 求和时要加上上一次的进位
const sum = Number(charX) + Number(charY) + Number(flag)
// 十进制加法满十进一 判断是否要进1位 不进位则为0
flag = sum >= 10 ? '1' : '0'
// 取模得到当前位存入
queue.unshift(sum % 10)
}
// 计算完毕后判断最高位是否产生了进位 如果产生了进位则补1
if (flag === '1') {
queue.unshift('1')
}
// 返回字符串表示形式
return queue.join('')
}
console.log(bigIntAdd('1234567899999999999', '1')) // 1234567900000000000
console.log(bigIntAdd('9999999999999999999', '1111111111111111111')) // 11111111111111111110
文章来源:https://www.toymoban.com/news/detail-575747.html
到了这里,关于js实现两个大数的相加的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!