【问题标题】:Performing math operations on very large numbers in Perl在 Perl 中对非常大的数字执行数学运算
【发布时间】:2023-04-03 04:52:01
【问题描述】:

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

所以我必须对 2^64 进行减法运算。我尝试使用简单的

2^64 - 18446744073709551608

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

【问题讨论】:

  • 2^64 是按位或; 2**64 是 2 的 64 次方

标签: perl types numeric


【解决方案1】:

查看bignum 编译指示:

use bignum;

print 2**64 - 18446744073709551608;

这应该正确打印8

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      use bignum ;
      
      print 2**64 - 18446744073709551608 ,"\n" ;
      

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

      【讨论】:

      • 这与@CanSpice 的回答有何不同?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多