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

IT技术 javascript floating-accuracy bignum
2021-01-26 23:07:24

是否有一个用于 JavaScript 或内置的 bignum 库,我可以包括

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

?

我认为我的用户更愿意在网页中输入数字并等待 7 秒以获得结果,而不是下载可执行文件并单击一堆“此可执行文件可能会损害您的计算机”警告屏幕来安装它。

我已经考虑过基于http://github.com/silentmatt/javascript-bigintegerhttp://www.mainebrook.com/john/fun/euler.html或者你会推荐从 JavaScript 调用到 Java bignum 库,比如 apfloat?

2个回答

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

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

原答案:

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

所以这是在所有 Firefox 版本上还是从特定版本开始?
2021-03-16 23:07:24
不是一个有启发性的讨论。对这个对我来说似乎不合法的问题做出回答似乎是“非法的”,这让我感到非常沮丧。
2021-03-17 23:07:24
这个答案正在 Meta 上讨论
2021-04-05 23:07:24

大数

严重的是有一个错误。尝试alert(new BigNumber(100).divide(1));
2021-03-22 23:07:24
这对我的应用程序很有用。(虽然从技术上讲,这个库不能完全代表 1/7,但它对于我的应用程序来说已经足够接近了)。
2021-03-24 23:07:24
不要粗鲁,但是这个有缺陷的图书馆会巧妙地伤害更多的人而不是它的帮助......
2021-03-26 23:07:24
该库的内部表示是将数字存储为十进制字符串。对于较大的数字和操作,这非常慢。
2021-04-01 23:07:24
Babiker,请原谅我拿走你的大绿色“已回答”复选标记并将其交给 jnnnnn。jnnnnn 的回答实际上确实准确地代表了 1/7。
2021-04-06 23:07:24