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
