non-compatible round-off when printing for gfortran
Tim Prince
tprince@myrealbox.com
Fri Jul 20 14:16:00 GMT 2007
Dominique Dhumieres wrote:
>> Ad hoc I don't see why the others print "0.2" for "0.2500000"; following
>> normal school maths one would round to 0.3.
>>
>
> Tie rounds to even rule (used in all modern CPUs for rounding; if someone
> has a good explanation, I'd be interested, the most plausible I have
> heard is some 'entropic' argument: 2 is better than 1.9999!-).
>
> If I remember correctly my reading of the F2003 draft there are the usual
> NEAREST (tie to even), ZERO, UP, DOWN rounding modes for I/O plus another
> one (don't remember the name) which does the 'correct for business' rounding
> (tie to up).
>
>
However, the original thread was not about rounding "0.2500000" It was
about rounding results which could be 0.2499997 with one set of options,
or 0.2500003 with another set of options. OP did not divulge (may not
have remembered?) which options were used, whether it was 32- or 64-bit
compilation, and other relevant issues. If OP wanted to round numbers
to nearest multiple of 1/20, prior to rounding to 0.2 or 0.3, that could
be done, but there was nothing of that nature in the posted code. OP is
complaining about porting difficulties. Those are sure to arise with
the evident lack of attention exhibited here.
More information about the Fortran
mailing list