在Perl中对非常大的数字执行数学运算

时间:2011-01-06 21:26:23

标签: perl types numeric

我有一种情况,数据文件中的某些值有64位环绕,这使得它们非常大,例如18446744073709551608

所以我必须从2 ^ 64执行减法。我用简单的

尝试了这个
2^64 - 18446744073709551608

但我猜这个数字太大而且没有得到实际答案8.我需要做些什么来执行这种减法。

3 个答案:

答案 0 :(得分:10)

查看bignum pragma:

use bignum;

print 2**64 - 18446744073709551608;

这应正确打印8

答案 1 :(得分:4)

请注意,bignum只是一个自动生成Math :: BigFloat或Math :: BigInt对象的所有常数的图层。如果您只想要某些数字,可以在限制范围内指定use bignum;,在地方添加no bignum;,或明确使用Math::BigFloat->new('your constant')(或BigInt)来制作特定数字和涉及他们的任何操作的结果都很大。

答案 2 :(得分:0)

use bignum ;

print 2**64 - 18446744073709551608 ,"\n" ;

在perl语言中,^ = **,mod =% 祝你好运!