<div dir="ltr">I stumbled upon something the other day that was causing numerical differences between compiled Delphi and FPC code. Executing the following sample console application illustrates the issue clearly:<div><br></div><div><div><font face="monospace">program test;</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">uses</font></div><div><font face="monospace">  math, SysUtils;</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">var</font></div><div><font face="monospace">  arg1 : double;</font></div><div><font face="monospace">  arg2 : double;</font></div><div><font face="monospace">  res  : double;</font></div><div><font face="monospace">begin</font></div><div><font face="monospace">  arg1 := 100000.00;</font></div><div><font face="monospace">  arg2 := 72500.51;</font></div><div><font face="monospace">  writeln( 'arg1 = ' + FormatFloat( '0.00000000', arg1 ) );</font></div><div><font face="monospace">  writeln( 'arg2 = ' + FormatFloat( '0.00000000', arg2 ) );</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">  res := arg1 - arg2;</font></div><div><font face="monospace">  writeln( 'arg1 - arg2 = ' + FormatFloat( '0.00000000', res ) );</font></div><div><font face="monospace">  writeln( 'Max( arg1 - arg2, 0 ) = ' + FormatFloat( '0.00000000', Max( res, 0 ) ) );</font></div><div><font face="monospace">  writeln( 'Max( arg1 - arg2, 0.0 ) = ' + FormatFloat( '0.00000000', Max( res, 0.0 ) ) );</font></div><div><font face="monospace">end.</font></div></div><div><br></div><div>--- begin output (Linux x86_64) ---</div><div><br></div><div><div><font face="monospace">arg1 = 100000.00000000</font></div><div><font face="monospace">arg2 = 72500.51000000</font></div><div><font face="monospace">arg1 - arg2 = 27499.49000000</font></div><div><font face="monospace"><b>Max( res, 0 ) = 27499.49023438</b></font></div><div><font face="monospace">Max( res, 0.0 ) = 27499.49000000</font></div></div><div><br></div><div>--- end output ---</div><div><br></div><div>I am guessing that the integer value of zero is causing the wrong overloaded function to be called? I was able to solve the problem in my code by replacing the 0 with 0.0.</div><div><br></div><div>Thanks,</div><div>  Alan</div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Alan Krause</div><div><i>President @ Sherman & Associates, Inc.</i></div><div>Office: (760) 634-1700    Web: <a href="https://www.shermanloan.com/">https://www.shermanloan.com/</a></div></div></div>