Re: round(50.5) = 50

From: Chris Browne <cbbrowne(at)acm(dot)org>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Re: round(50.5) = 50
Date: 2004-03-01 15:13:55
Message-ID: 60y8qkob0s.fsf@dev6.int.libertyrms.info
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Philipp(dot)Hahn(at)informatik(dot)uni-oldenburg(dot)de (Philipp Matthias Hahn) writes:
> # SELECT round(5.5::float4),round(50.5::float4);
> round | round
> -------+-------
> 6 | 50
> (1 row)
>
> I think this is a bug, since I would expect 6 and 51. Doing the same
> without the float4-cast, it works correct. This bug bites me while
> passing parameters to a plpgsql function.
>
> This happens both with Debian 7.3.4-9 and 7.4.1-3
>
> Is this a real bug or am I missing something? A bug fix or work-around
> would be nice.

Why would this be a bug?

A common policy for rounding is "round to even." That has the merit
of not being biased whether you're working with positive or negative
values.

It looks as though your LIBC is using "round-to-even."
--
(reverse (concatenate 'string "gro.mca" "@" "enworbbc"))
http://cbbrowne.com/info/sap.html
"For those of you who are into writing programs that are as obscure
and complicated as possible, there are opportunities for... real fun
here" -- Arthur Norman

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2004-03-01 16:33:57 initdb failed for CVS version
Previous Message pgsql-bugs 2004-03-01 13:31:18 Returned due to virus; was: Re: Re: Thanks!