[fpc-devel] Rounding inconsistent (critical)

Graeme Geldenhuys graemeg.lists at gmail.com
Mon Oct 2 12:38:48 CEST 2006


Oh, I followed the rules as define for Banker's Rounding
(round-to-even) show on Wikipedia

http://en.wikipedia.org/wiki/Rounding

Use that to round 0.445 and 0.455.  I gather that Delphi 7 defaults to
Common Rounding and not Banker's Rounding.

Should FPC follow the Delphi rules on this to stay compatible?

Regards,
  - Graeme -


On 02/10/06, Graeme Geldenhuys <graemeg.lists at gmail.com> wrote:
> On 02/10/06, Vincent Snijders <vsnijders at quicknet.nl> wrote:
> > It is not a bug, it is using bankers rounding. See
> > http://lazarus-ccr.sourceforge.net/docs/rtl/system/round.html
> >
> > Vincent
>
> Exactly, but it is still wrong, except if I really don't know how
> Banker's rounding works and what they mean by Even Number.
>
> Take these to new tests.
>
>   AssertEquals('Failing on 10', '0.44', FormatFloat('0.00', 0.445));
>   AssertEquals('Failing on 11', '0.46', FormatFloat('0.00', 0.455));
>
> Test 10:
>   Fails and said it expected 0.45 instead of my answer 0.44.  Why?
> This is how I came to my answer of 0.44.  I ignore the "0." and only
> look at 445 and I want that to 2 decimal digits. Lets now do what the
> documentation says and go to the closest even number. 44 is even, 45
> is not.  So I would have thought it must round down to 0.44.  It
> doesn't.
>
> Test 11:
>   Fails and said it expected 0.45 instead of my answer 0.46.  Again,
> the way I rounded it. Ignore the "0.' and only look at 455.  I want it
> to 2 decimal digits. What is the closest to a even number 45 or 46. In
> this case, 46. Hence I expected it to round up and the final answer to
> be 0.46.  It doesn't.
>
> I'm confused!!  :-)
>
> ---- Under Delph 7 I got this  -----------
> Failing on 9: Expected <0.00> but got <0.01>
>
> Failing on 10: Expected <0.44> but got <0.45>
> ------------------  end  --------------------
>
> So what rounding does Delphi 7 use?
>
>
> Regards,
>   - Graeme -
>


-- 
There's no place like 127.0.0.1



More information about the fpc-devel mailing list