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

7

在Perl中,有没有使用任意长度的整数的标准方法?我正在编写生成x64汇编代码的测试代码,并且厌倦了一次操纵32位。

我正在使用Perl 5.10.0,如果有价值的话。

2个回答

15

4
可能还需要使用 use bigint;,它可以将作用域内的每个数字文字转换为 BigInt,无需使用 Math::BigInt->new。当然要小心使用。 - hobbs
4
或者使用 use bignum;,它将 Bigint 扩展为 BigFloat。 - Anonymous

10
如果你只想使用大整数,可以使用bigint,并将其限定在文件范围内:
 use bigint;

或者只是有限的范围:
 {
 use bigint;
 ...;
 }

如果您需要大浮点数以及大整数,您可以使用相同的方式使用bignum pragma。无论哪种方法,这些都会稍微减慢程序的速度(如果您正在进行大量数学运算,则会显著减慢),因此您应该仅在真正需要它们的部分使用它们。然而,更快并不比正确更好。 :)
如果您想非常精确地控制使用big*数学的数字,您可以使用实现它们的底层类并自己创建对象,而不是将big*语义应用于所有内容。查看Math::Big*模块。
我在Mastering Perl的基准测试章节中谈到了这个问题,因为计算机现在太快了,无法将阶乘作为慢速函数使用,我们还添加了一个关于大数字的部分到即将推出的Effective Perl Programming, 2nd Edition中。

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