如何在Perl中使用任意长度的整数?

Nat*_*man 7 perl integer arbitrary-precision

在Perl中是否有任何标准方法可以使用任意长度的整数?我正在研究为测试生成x64程序集的代码,我厌倦了一次操作32位.

我正在使用Perl 5.10.0,因为它的价值.

mob*_*mob 15

use Math::BigInt

  • 并且可能`使用bigint;`这使得*范围内的每个*数字文字都是没有`Math :: BigInt-> new`的BigInt.当然,请小心使用. (4认同)
  • 或者`使用bignum;`,它使用BigFloat扩展bigint. (4认同)

bri*_*foy 10

如果您只想使用大整数,则可以使用bigint,您可以将其作为文件的范围:

 use bigint;
Run Code Online (Sandbox Code Playgroud)

或只是一个有限的范围:

 {
 use bigint;
 ...;
 }
Run Code Online (Sandbox Code Playgroud)

如果你需要大的浮点数和大整数,你可以用bignum同样的方式使用pragma.无论哪种方式,这些都会稍微减慢你的程序速度(或者如果你做了大量的数学运算,那么你的程序会很明显),所以你应该只将它们用于你真正需要它们的部分.但是,速度并不快于正确.:)

如果您希望非常精确地控制使用big*数学的数字,您可以使用实现它们的基础类并自己创建对象,而不是将big*语义应用于所有内容.看那些Math::Big*模块.

我在Mastering Perl的基准测试章节中更多地讨论了这个问题,因为现在计算机速度过快,使用因子作为慢速函数,我们还在即将发布的有效Perl编程第2版中添加了一个关于大数字的部分.