Thanks for the explanation, that's exactly the level of detail I need.
-Robert
On Tue, Apr 21, 2009 at 12:00 PM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
Robert Morton <morton2002@xxxxxxxxx> writes:Ah, now you tell us.
> Perhaps there are platform differences, since the version I am using was
> built with Microsoft Visual Studio:
round(float8) just calls the platform's rint() function. At least on
platforms that have rint(), which maybe Windows doesn't. In that case
it's going to come down to src/port/rint.c, which is not particularly
careful about the exactly-0.5 case. I think fully-standards-conformant
versions of rint() are probably going to use a "round to nearest even
integer" rule in such cases. But by and large, float8 arithmetic *is*
going to have platform-specific behaviors; you're living in a fantasy
world if you think otherwise.
regards, tom lane