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