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

Daniël Mantione daniel.mantione at freepascal.org
Sun Oct 28 19:08:09 CET 2007



Op Sun, 28 Oct 2007, schreef Milan Marusinec:

> Hello folks,
> 
> This one looks pretty elementary, but to my big surprise
> it doesn't work as I would expect.
> 
> I'd like to ask FreePascal compiler creators, how can I safely
> evaluate double variables in case like this.
> 
> Sample program with comment is in attachement ...

If you do on a hand calculator:

1/3

... you will see:

0.33333333333

If you multiply again with 3, you will see:

0.99999999999

... and not 1.00000000000.

There is a similar issue here. The value "0.4" cannot be stored exactly in 
a computer, therefore it is rounded.

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


More information about the fpc-pascal mailing list