On 08/14/2013 08:03 AM, Sven Barth wrote: > Am 13.08.2013 23:48 schrieb "David Emerson" <dle...@angelbase.com > <mailto:dle...@angelbase.com>>: >> >> Hi all, >> >> I have just discovered that the system.round function has this very > odd behavior of rounding towards an even number when the fractional part > is .5 -- in the system.round documentation this is described as > "banker's rounding" >> >> I do not like this behavior. How can I use a more > mathematically-traditional round function, which always rounds .5 up, > and everything below .5 down? >> >> Do I need to write this function myself? > > Take a look at SetRoundMode in unit Math: > http://www.freepascal.org/docs-html/rtl/math/setroundmode.html >
None of the round modes gives the result OP wants. Furthermore, SetRoundMode is a runtime setting and writeln(round(0.5)); writeln(round(1.5)); results in 0 2 The compiler hard codes (x64) a movabs $0x0,%rdx and movabs $0x2,%rdx Ludo _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal