Can anyone shed any light on this (I find the documentation for printf and sprintf to be particularly vague...):
for my $num ( 0 .. 101 ) {
$num += 0.005;
printf "%.2f\n", $num;
}
Output: I get (using ASP 5.61, WinXP):
0.01
1.00
2.00
3.00
..
8.01
..
followed by seemingly random series of x.00 or x.01. Interestingly(?), if I change the number of decimals that I want to round to:
for my $num ( 0 .. 101 ) {
$num += 0.0005;
my $result = sprintf "%.3f", $num;
print "$result\n";
}
I get similarly strange results, but not for the same 'numbers' (eg I get 2.001 and 3.001, as compared with 2.00 and 3.00 in the first case
Am I missing something (as usual)?
tia, dave
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|