Perl help
Bob Bell
bbell at hp.com
Tue Jul 22 17:38:15 EDT 2003
On Tue, Jul 22, 2003 at 04:19:17PM -0400, Cole Tuininga <colet at code-energy.com> wrote:
> However, I'm extremely confused by the following:
>
> egon at trogdor:~$ perl -e 'print sprintf( "%.2f\n", 0.565 )'
> 0.56
>
> Can anybody explain why this is not rounding up? Thanks in advance...
First of all, I don't know why the code isn't simply:
$ perl -e 'printf("%.2f\n", 0.565)'
0.56
or why perl necessarily needs to be part of the solution:
$ printf "%.2f\n" 0.565
0.56
[ The printf command is part of the Single Unix Spec V2 (aka UNIX98) ]
I dug around in the C99 standard, and couldnt't find this referenced
anywhere. Additionally, I tried playing with more precision, and
turned up the following:
$ perl -e 'printf "%.19f -> %.2f\n", $_, $_ for qw/0.005 0.015 0.025 0.035 0.045/'
0.0050000000000000001 -> 0.01
0.0149999999999999990 -> 0.01
0.0250000000000000010 -> 0.03
0.0350000000000000030 -> 0.04
0.0449999999999999980 -> 0.04
So I think it's all about the precision of the number as stored as in
its binary representation.
--
Bob Bell <bbell at hp.com>
-------------------------------------------------------------------------
"Testing shows the presence, not the absence, of bugs."
-- Edsger W. Dijkstra, University of Texas
More information about the gnhlug-discuss
mailing list