good chemistry is complicated,and a little bit messy -LW PerlMonks

### Re: Wrong calculations in for loop

by moritz (Cardinal)
 on Aug 22, 2012 at 13:10 UTC ( #989026=note: print w/replies, xml ) Need Help??

in reply to Wrong calculations in for loop

Luckily you can run the script with only very small changes under Perl 6, and it produces the output you expect:

```use v6;
my \$zmax = 60;    # Maximum depth in your model
my \$dz = 0.05;    # Grid spacing in z-direction

loop (my \$i=0; \$i <= \$zmax; \$i = \$i+\$dz) {
say \$i;
}

produces

```...
3.6
3.65
3.7
3.75
...
59.9
59.95
60

It accomplishes that magic by doing math with rationals (stored as integer numerator and denominator) by default.

Replies are listed 'Best First'.
Re^2: Wrong calculations in for loop
by Athanasius (Chancellor) on Aug 22, 2012 at 13:22 UTC

OK, but getting the same result in Perl 5 is almost as easy:

```#! perl
use strict;
use warnings;

my \$zmax = 60;      # Maximum depth in your model
my \$dz   =  0.05;   # Grid spacing in z-direction

print +(\$_ * \$dz), "\n" for (0 .. int((\$zmax / 0.05) + 0.5));

:-)

Athanasius <°(((><contra mundum

Or even simpler, just change the print to printf

```my \$zmax = 60;    # Maximum depth in your model
my \$dz = 0.05;    # Grid spacing in z-direction

for (my \$i=0; \$i <= \$zmax; \$i = \$i+\$dz) {
printf("%.2f\n", \$i);
}

Create A New User
Node Status?
node history
Node Type: note [id://989026]
help
Chatterbox?

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2018-05-26 13:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
World peace can best be achieved by:

Results (194 votes). Check out past polls.

Notices?