当有两个整数 a 和 b ,在通常情况下我们有 + 运算符对其进行相加运算:

    1. let sum = a + b;

    但是 JS 在存放整数的时候是有一个安全范围的,一旦数字超过这个范围便会损失精度。

    JS 中整数的最大安全范围可以查到的是:9007199254740991

    所以,我们要用字符串来表示数据。
    下面展示两个大数相加的代码:

    1. let a = "9007199254740991";
    2. let b = "12345678999999999999";
    3. function add(a, b) {
    4. // 取两个数字的最大长度
    5. let maxLength = Math.max(a.length, b.length);
    6. // 用 0 去补齐长度
    7. a = a.padStart(maxLength, 0); // "00009007199254740991"
    8. b = b.padStart(maxLength, 0); // "12345678999999999999"
    9. // 定义加法过程中需要用到的变量
    10. let t = 0;
    11. let f = 0; // "进位"
    12. let sum = "";
    13. for(let i=maxLength-1; i>=0; i--){
    14. t = parseInt(a[i]) + parseInt(b[i]) + f;
    15. f = Math.floor(t/10);
    16. sum = t%10 + sum;
    17. }
    18. if(f == 1){
    19. sum = "1" + sum;
    20. }
    21. return sum;
    22. }