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

时间:2010-01-24 08:22:28

标签: perl integer arbitrary-precision

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

我正在使用Perl 5.10.0,这是值得的。

2 个答案:

答案 0 :(得分:15)

答案 1 :(得分:10)

如果您只想使用大整数,可以使用bigint,您可以将其范围扩展到文件:

 use bigint;

或仅限范围:

 {
 use bigint;
 ...;
 }

如果您需要大浮点数和大整数,则可以以相同的方式使用bignum编译指示。无论哪种方式,这些都会稍微减慢你的程序速度(或者如果你做了大量的数学计算会显着减慢程度),所以你应该只将它们用于你真正需要它们的部分。但是,速度并不快于正确。 :)

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

我在Mastering Perl的基准测试章节中更多地讨论了这个问题,因为现在计算机速度过快,使用因子作为慢速函数,我们还在即将到来的{{3}中添加了一个关于大数字的部分。 }。