如何在JavaScript中处理大数

29

我正在寻找一个数学解决方案,可以处理非常(长、大、巨大、庞大)的数字。目前我还没有找到任何东西,但我不想认为这个问题至今还没有得到解决。我在寻找一个简单的数字解决方案,例如 Microsoft Excel 精度(30 位小数),或者 BigInteger(Java)解决方案。当然是在 JavaScript 中实现。


1
请参见 https://dev59.com/XHA75IYBdhLWcg3w186G。 - Crescent Fresh
1
您可以使用 https://www.npmjs.com/package/big-numbers 来进行大数的转换、格式化、算术和三角函数运算。 - alexey28
你是否曾经找到过一个能正确处理浮点数的库?链接中的答案仅支持整数。 - aggregate1166877
3个回答

11

在为ElGamal加密实现寻找大整数库时,我测试了几个库,以下是测试结果:

我推荐这个: Tom Wu的jsbn.js (http://www-cs-students.stanford.edu/~tjw/jsbn/)

  • 具有全面的功能和快速的特点

Leemon Baird的大整数库 (http://www.leemon.com/crypto/BigInt.js)

  • 具有全面的功能和相当快的速度
  • BUT: 负数表示存在错误!

bignumber.js (https://github.com/MikeMcl/bignumber.js)

  • 具有相当完整的功能集
  • BUT: 将非常大的数字从字符串转换为BigNumber对象会导致INFINITY

JavaScript的Scheme算术库 (https://github.com/jtobey/javascript-bignum)

  • Scheme算术函数的JS实现
  • BUT: 没有用于y= x^e mod n的函数

我自己没有测试过这个: BigNumber (http://jsfromhell.com/classes/bignumber)

  • 用于高精度计算的函数
  • BUT: 由于将数字作为字符串进行内部表示,它被认为是慢的

“BUT”对于bignumber.js仍然适用吗?这方面是否存在问题? - Olga

2

这里有一个适用于JavaScript的BigInteger库:

(注意,我自己没有使用过。你可以试试看,看看效果如何。)


+1 个答案,但是哇,那个脚本需要重构。完全没有必要在各个地方使用全局符号,这只会引发冲突。 - T.J. Crowder
@TJ 我认为这个更或多或少是Java BigDecimal类的直接翻译...它已经存在了很久。 - Pointy
谢谢,如果能更容易理解和扩展就太好了。 - crsuarezf

0

抱歉,我正在寻找一个专门管理那种数字的程序。 :) - crsuarezf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接