[fpc-pascal] Re: Why this evaluates on "if" wrong ?

Milan Marusinec milan at marusinec.sk
Sun Oct 28 23:09:31 CET 2007


> This behaviour normal and while annoying, it is simply how things work 
> in the digital world, you will have to work around it.
>
> Daniƫl
oh yes, this is one of the possible workarounds:

function is_equal_dbl(a ,b : double ) : boolean;
const
 epsilon = 1e-14;

begin
 result:=Abs(a - b ) < epsilon;

end;

It's just one more funny thing one must realize,
when comparing real numbers with some exact
real constants. After this, I will try to never
compare doubles directly, but using tricks like
above. Because, in this digital world
1 + 0.4 - 0.4 <> 1.

Milano




More information about the fpc-pascal mailing list