2011-01-06 70 views
3

我有一種情況,數據文件中的某些值有64位環繞,這使得它們非常大,如18446744073709551608在Perl中對非常大的數字執行數學運算

所以我必須從2^64執行減法。我試圖用這個簡單的

2^64 - 18446744073709551608 

但我想這個數字過大而沒有得到實際的答案8.什麼,我需要做的,執行該減法。

+1

`2^64`是按位或; `2 ** 64`是兩個64的力量 – mfontani 2011-01-07 11:42:12

回答

10

退房的bignum編譯:

use bignum; 

print 2**64 - 18446744073709551608; 

這應該正確打印8

4

請注意,bignum只是一個自動生成所有常量數字的圖層Math :: BigFloat或Math :: BigInt對象。如果您只想要某些數字,您可以在受限範圍內指定use bignum;,在地點添加no bignum;,或者明確使用Math::BigFloat->new('your constant')(或BigInt)來製作特定數字,並且涉及它們的任何操作的結果都很大。

0
use bignum ; 

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

in perl language,^ = **,mod =% 祝你好運!

+0

與@CanSpice的回答有什麼不同? – Toto 2016-08-22 09:46:30