大数相加
JS 中整数的最大安全范围可以查到是:9007199254740991 即 (2 ** 53) - 1
1
2
//Example
add('9007199254740991', '1234567899999999999') // 结果为:1243575099254740990
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function addBigNum (str1, str2) {
// 取这两个数的最大长度
let maxLen = Math.max(str1.length, str2.length)
str1 = str1.padStart(maxLen, 0)
str2 = str2.padStart(maxLen, 0)
// 定义加法过程中需要用的变量
let t = 0
let f = 0 // 进位
let sum = ""
for (let i = maxLen-1;i>=0;i--) {
t = parseInt(str1[i]) + parseInt(str2[i]) + f
f = Math.floor(t / 10)
sum = t % 10 + sum
}
//
if (f == 1) {
sum = "1" + sum
}
return sum
}
addBigNum('9007199254740991', '1234567899999999999')
用新的基本类型 BigInt 也可以
1
BigInt('1234567899999999999') + BigInt('9007199254740991') // 1243575099254740990n