1

Tcl 库 math::bignum 和 math::bigfloat 很好,两者之间的中间地带需要解决。即,位于不同基数并具有小数点的大数。

目前 math::bignum 只处理整数(afaict),而 math::bigfloat 不允许你为 math::bigfloat::fromstr 指定不同的基数(同上)。

有谁知道任何主要脚本语言(例如 Tcl、Perl、Python、Ruby、Lua)或不太主要的脚本语言(例如 newLISP)的库,它在不同的基数中实现 bignums 并处理小数点?

4

3 回答 3

1

bignumber.js是一个 Javascript 库,用于处理以 2 到 36 为基数的小数点。

于 2012-11-16T19:17:16.810 回答
0

我找不到任何图书馆,但我没找太久。

但是您可以解决这个问题,就像您想要 64 位数据类型时所做的那样,但只有 32 位数据类型可用。使用您已经拥有的库,您应该能够像这样以 b 为基数表示一个数字:

 ABCDEF.GHIJKLMN

可以拆分为两个大数 ABCDEF 和 GHIJKLMN。GHIJKLMN 实际上代表 GHIJLMN / pow(b, length(GHIJKLMN)) => GHIJKLM / pow(b, 8)。现在您可以覆盖您需要的运算符,这对于 +、-、*、/ 等应该是可能的。如果您需要更多诸如 sqrt、log 或 pow 之类的东西,这种解决方法将变得过于复杂,您真的应该寻找一个库。

于 2009-04-05T14:26:58.227 回答
0

最好的选择是使用 GMP (libgmp)。

没有运气,我自己已经为 .NET 版本寻找了很久很久。

于 2009-04-15T06:01:36.507 回答