[fpc-pascal] Strange floating-point result
Thomas Kurz
fpc.2021 at t-net.ruhr
Fri Nov 11 11:49:17 CET 2022
Hello,
by chance, I stumbled upon a strange behavior in floating-point calculation. Here's the example:
program Project1;
var
f: double;
n: integer = 1758;
m: integer = 0;
begin
f := n * 1.2E6 + (2*m+1) * 50E3; // 2109650048
f := Double(n) * 1.2E6 + Double(2*m+1) * 50E3; // 2109650000
end.
Why do I have to explicitly cast Integer to Double here? I never did that before and am a bit worried whether I could get wrong results elsewhere, too, without having them noticed yet. And how does the first value come about?
FPC is 3.2.2 on Win64, targeting Win64.
Kind regards,
Thomas
More information about the fpc-pascal
mailing list