This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: printf("%0.0f", 0.5) yields unexpected result (0)


Mo McKinlay wrote:
> 
> # Round to next even digit if .5, what's strange about that?
> 
> I don't know what school you guys went to, but I was always taught to
> round up to the next number, not the next *even* number. I may be being
> incredibly stupid, but where on earth did the ISO committee get this
> behaviour from? I've never heard of next-even-number-rounding before in my
> life :)
Ah, yes round 1/2 up is OK for real numbers, but floating point numbers
are not real numbers. As such, if you rounded up you'd introduce a bias.
Strange as it may seem round to nearest even is better for floats.

Quick example. Suppose the exact results were evenly distributed over the
set of half integers and the representable results were in the set of
integers. Now rounding the 1/2 values up would introduce an average
systematic bias of +1/4 rounding towards nearest even gives an average
bias of zero.

nathan
-- 
Dr Nathan Sidwell   ::   http://www.codesourcery.com   ::   CodeSourcery LLC
         'But that's a lie.' - 'Yes it is. What's your point?'
nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]