I have a case where some values in a data file have 64 bit wrap around which makes them very large, like, 18446744073709551608
.
So I have to perform a subtraction from 2^64. I tried this using the simple
2^64 - 18446744073709551608
But I guess this number is too large and don't get the actual answer 8. What do I need to do to perform this substraction.
Check out the bignum
pragma:
use bignum;
print 2**64 - 18446744073709551608;
This should properly print 8
.
Note that bignum is just a layer that makes all constant numbers automatically Math::BigFloat or Math::BigInt objects. If you only want this for some numbers, you can either specify the use bignum;
in a restricted scope, add no bignum;
in places, or explicitly use Math::BigFloat->new('your constant')
(or BigInt) to make particular numbers and the results of any operations involving them big.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With