如何在JavaScript中存储非常大的数字?

时间:2019-06-17 16:28:14

标签: javascript

如果我想存储一个非常大的数字然后显示它怎么办。例如200的阶乘。

如何使用JavaScript做到这一点?

我尝试了正常方式,结果为null或无穷大。

function fact(input) {
    if(input == 0) {
        return 1;
        }
    return input * fact(input-1);
}
var result = fact(171);
console.log(result);

enter image description here

我以正常方式尝试过,结果为无穷大或为空。 看来JavaScript最多可以生成170个阶乘。

enter image description here

看这张照片。这个计算器似乎可以做到。

2 个答案:

答案 0 :(得分:4)

BigInt数值类型将在JavaScript的未来版本中实现,the proposal处于ECMAScript标准化过程的第3阶段,major browsers now支持该类型。

您可以使用BigInt构造函数或数字文字,只需在数字末尾附加一个n

在较旧的环境中,您可以使用a polyfill

function fact(input) {
    if(input == 0n) {
        return 1n;
    }
    return input * fact(input-1n);
}

const result = fact(171n);

console.log(String(result));

答案 1 :(得分:1)

试试这个基于javascript的BigInteger库。有很多选择。但我推荐这个https://github.com/peterolson/BigInteger.js

示例:

var num = bigInt("9187239176928376598273465972639458726934756929837450")
.plus("78634075162394756297465927364597263489756289346592");