JavaScript 大整数操作相关方法
原理
js 整数最大不能超过 2^53 - 1,参考
所以,为了避免丢失精度,我们需要用字符串来表示数据。
相加
String.prototype.padStart() 使用另一个字符串填充当前字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
let a = "9007199254740991";
let b = "1234567899999999999";
function add(a, b) {
// 取两个数字的最大长度
const maxLength = Math.max(a.length, b.length);
// 用 0 补齐长度
a = a.padStart(maxLength, 0); // "0009007199254740991"
b = b.padStart(maxLength, 0); // "1234567899999999999"
// 定义变量
let t = 0;
let f = 0; // 进位
let sum = "";
for (let i = maxLength - 1; i >= 0; i--) {
t = ~~a[i] + ~~b[i] + f; // ~~ 相当于 parseInt()
f = Math.floor(t / 10); // 向下取整
sum = t % 10 + sum;
}
if (f === 1) {
sum = "1" + sum;
}
return sum;
}
const bigNumberSum = add(a, b); // 1243575099254740990
|