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