【问题标题】:What is the standard solution in JavaScript for handling big numbers (BigNum)? [closed]JavaScript 中处理大数(BigNum)的标准解决方案是什么? [关闭]
【发布时间】:2011-03-05 13:52:54
【问题描述】:

是否有用于 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?

【问题讨论】:

  • 我不太明白你的问题,你先要一个bignum库,然后你自己提供两个? :)
  • 当我说“精确有理算术”时,我的意思是“可以精确地表示像 1/7 这样的数字”。据我所知,我提到的两个库不能做到这一点——它们只能处理整数。
  • 好吧,我不喜欢草率阅读:)
  • 有一个 BigRational.js 库用于精确的有理算术。
  • 这是一个非常有用的问题,所以我尝试挽救它。模糊的图书馆请求是不合适的;标准库解决方案应该在 SO 上蓬勃发展。

标签: javascript floating-accuracy bignum


【解决方案1】:

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

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

原答案:

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

【讨论】:

  • 不是一个有启发性的讨论。对这个问题给出一个对我来说似乎不合法的答案似乎是“非法的”,这让我感到非常沮丧。
  • 那么这是在所有 Firefox 版本上还是从特定版本开始?
【解决方案2】:

【讨论】:

  • 这对我的应用非常有用。 (虽然从技术上讲,这个库不能完全代表 1/7,但对于我的应用来说已经足够接近了)。
  • 这个库的内部表示是将数字存储为十进制字符串。对于较大的数字和操作,这非常慢。
  • Babiker,请原谅我拿走你的绿色“已回答”大勾号并把它交给 jnnnnn。 jnnnnn 的答案实际上确实代表了 1/7。
  • 严重存在错误。试试alert(new BigNumber(100).divide(1));
  • 不要粗鲁,但这个有问题的库会巧妙地伤害更多的人而不是帮助......
猜你喜欢
  • 1970-01-01
  • 2010-12-31
  • 2010-09-05
  • 1970-01-01
  • 2013-02-02
  • 2014-04-13
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多