WTF ?

Jody Belka lists-lpm at pimb.org
Wed Jan 10 13:00:07 GMT 2007


On Wed, Jan 10, 2007 at 12:39:25PM +0000, Paul Orrock wrote:
> Can anyone explain why this is ? I get the correct (in my eyes) 1dp / 
> 2dp result with 0.04 and 0.06 but 0.05 ends up to 14dp ?


>From perlfaq4:

Data: Numbers
       Why am I getting long decimals (eg, 19.9499999999999) instead of the
       numbers I should be getting (eg, 19.95)?

       Internally, your computer represents floating-point numbers in binary.
       Digital (as in powers of two) computers cannot store all numbers
       exactly.  Some real numbers lose precision in the process.  This is a
       problem with how computers store numbers and affects all computer
       languages, not just Perl.

       perlnumber show the gory details of number representations and
       conversions.

       To limit the number of decimal places in your numbers, you can use the
       printf or sprintf function.  See the "Floating Point Arithmetic" for
       more details.

               printf "%.2f", 10/3;

               my $number = sprintf "%.2f", 10/3;



J
-- 
Jody Belka
knew (at) pimb (dot) org


More information about the london.pm mailing list