JavaScript 中用于处理大数字 (BigNum) 的标准解决方案是什么?

What is the standard solution in JavaScript for handling big numbers (BigNum)?

提问人: 提问时间:6/19/2010 最后编辑:6 revs, 4 users 44%David Cary 更新时间:3/14/2022 访问量:53745

问:

JavaScript 或浏览器中是否内置了 bignum?

备用是加载外部库,例如

<script type="text/javascript" src="the_bignum_library.js"></script>

但这似乎很慢,可能会触发安全警告。

我考虑过以 http://github.com/silentmatt/javascript-bigintegerhttp://www.mainebrook.com/john/fun/euler.html 为基础。或者,解决方案是调用 Java bignum 库(如 apfloat)吗?

javascript 浮动精度 bignum

评论

0赞 Skurmedel 6/19/2010
我不太明白你的问题,首先你要求一个 bignum 库,然后你自己提供两个?:)
0赞 David Cary 6/21/2010
当我说“精确有理算术”时,我的意思是“可以精确地表示像 1/7 这样的数字”。据我所知,我提到的两个库不能做到这一点——它们只能处理整数。
1赞 Peter Olson 11/13/2014
有一个用于精确有理算术的 BigRational.js 库。
0赞 David Cary 11/16/2014
@PeterOlson:谢谢,这个项目(始于2013年)看起来正是我在2010年寻找的。也许我当时应该自己开始这样一个项目,而不是假设其他人肯定已经启动了这样的项目?

答:

39赞 6 revs, 4 users 44%jnnnnn #1

更新(2019-08-19): BigInt 现在是 Firefox 和 Chrome 的一部分;您不再需要库:

const bigInt1 = 1111111111111111111111111111111n;
const bigInt2 = BigInt("1111111111111111111111111111111")
console.log((bigInt1 + bigInt2)+"")

原答案:

如果您需要任意精度的十进制数,请使用 Javascript-bignum,因为它既正确又快速。

评论

1赞 halfer 7/26/2018
这个答案正在 Meta 上讨论
0赞 Max 6/14/2019
这不是一个有启发性的讨论。我有点沮丧,因为回答这个问题似乎“非法”,这在我看来不仅仅是合法的。
0赞 DRP 1/18/2020
所以这是在所有 firefox 版本上还是从特定版本开始?