[tpm] Math::BigInt issue
Madison Kelly
linux at alteeve.com
Sat Sep 12 13:09:05 PDT 2009
Sergio Salvi wrote:
> You're letting Perl do the "2 ** 60" calculation, which will indeed be
> limited. You want to tell Math::BigInt do to it for you:
>
> my $value = Math::BigInt->new("2")->bpow("60");
> # $value is 1152921504606846976
>
> Sergio
>
> On Sat, Sep 12, 2009 at 1:29 PM, Madison Kelly<linux at alteeve.com> wrote:
>> Hi all,
>>
>> Not sure if I am being daft or something, but it looks like Math::BigInt
>> isn't returning a value I expected.
>>
>> I'm doing a test to make sure that 1 exbibyte (2**60) returns, as I
>> manually calculated, "1152921504606846976". Instead though, I get
>> "1152921504606850000". This looks like it rounded off..
>>
>> Can anyone see why then:
>>
>> my $size=1;
>> my $bytes=Math::BigInt->new($size*(2**60));
>>
>> Rounds off?
>>
>> Thanks!
>>
>> Madi
Yup, that was it. *Doh*. Here's what I needed to do to include the
(variable) size multiplied against it.
my $size=1;
my $bytes=Math::BigInt->new('2')->bpow('60')->bmul($size);
Thanks!!
Madi
More information about the toronto-pm
mailing list