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

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to