Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Number::Spell

by blokhead (Monsignor)
on Jan 28, 2004 at 14:26 UTC ( #324673=note: print w/replies, xml ) Need Help??

in reply to Number::Spell

This is an issue with Perl, not with this module. Huge numbers get converted to floats automatically by Perl. You can't convert back, as you suggest, because you've lost accuracy:
$ perl -e 'print 10000000000000001, $/' 1e+16 $ perl -e 'print 10000000000000005, $/' 1e+16 $ perl -e 'print 10000000000000000, $/' 1e+16
You will find that every module on CPAN that needs to deal with integers this big either (A) requires you to pass the number as a string, or (B) uses Math::BigInt or similar, to prevent Perl from converting the integer to a float. Even notice from Math::BigInt's pod:
Scalars holding numbers may also be passed, but note that non-integer +numbers may already have lost precision due to the conversation to float. Quot +e your input if you want BigInt to see all the digits: $x = Math::BigInt->new(12345678890123456789); # bad $x = Math::BigInt->new('12345678901234567890'); # good


Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://324673]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2022-08-12 17:51 GMT
Find Nodes?
    Voting Booth?

    No recent polls found