如何在javascript中将两个大数相加?

Swa*_*til 8 javascript

我有两个文本框。每个将接受最多千位数字的输入。

现在我想将这两个数字相加。我的问题是我应该使用什么数据类型来存储结果?

我已经尝试过这个:

<script>
   var x = 'Thousand digit of number'
    var y = 'Thousand digit of number'
    var z = x + y
</script>
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是指数形式的。如何存储结果并显示?

Qwe*_*rty 13

这是另一种解决方案,因为它更快、更干净。

function add(A, B) {
  const AL = A.length
  const BL = B.length
  const ML = Math.max(AL, BL)

  let carry = 0, sum = ''

  for (let i = 1; i <= ML; i++) {
    let a = +A.charAt(AL - i)
    let b = +B.charAt(BL - i)

    let t = carry + a + b
    carry = t/10 |0
    t %= 10

    sum = (i === ML && carry)
      ? carry*10 + t + sum
      : t + sum
  }

  return sum
}

Run Code Online (Sandbox Code Playgroud)
> add(
'9999999999999999999999999999999999999999999999999999999999999999999999999999',
'999999999999999999999999999999999999999'
)

> "10000000000000000000000000000000000000999999999999999999999999999999999999998"
Run Code Online (Sandbox Code Playgroud)


Lia*_*iam 7

按照此处所述使用 BigInt:https ://stackoverflow.com/a/56370672/641913

const z = BigInt(x) + BigInt(y);

console.log(z.toString());
Run Code Online (Sandbox Code Playgroud)


mud*_*din 1

将数字作为字符串输入,并将每个字符作为数组相互添加,如下所示:

 function add() {
        document.getElementById("demo").innerHTML = "";
        var x = document.getElementById("txt1").value;
        var y = document.getElementById("txt2").value;
        var len;
        var lenx = x.length;
        var leny = y.length;
        var x1,y1,rem,div=0;
        if(lenx>leny) len = lenx; else len = leny;

        for(var i=0;i<len;i++){
            if(i>=lenx) x1  = 0;
            else x1 = parseInt(x[lenx-i-1]);
            if(i>=leny) y1 = 0;
            else y1 = parseInt(y[leny-i-1]);
            rem = (x1+y1+div)%10;
            div = Math.floor((x1 + y1+div)/10);
            document.getElementById("demo").innerHTML = rem + document.getElementById("demo").innerHTML;
        }
       if(div>0){
            document.getElementById("demo").innerHTML = div + document.getElementById("demo").innerHTML;
       }
    }
Run Code Online (Sandbox Code Playgroud)

这里的代码: https: //jsfiddle.net/mtsL1k2x/5/

注意:这仅适用于自然数。您可以根据您的输入进行修改