On Mon, Mar 23, 2015 at 7:48 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> rschaaf@commoninf.com writes:
>> The result returned by the following query appears to depend on the
>> PostgreSQL database version.
>
>> The query is:
>> select column1 AS double_value, cast(column1 AS INT) AS int_value
>> from (VALUES (-2.5::double precision),
>> (-1.5::double precision),
>> (-0.5::double precision),
>> (0.5::double precision),
>> (1.5::double precision),
>> (2.5::double precision)) t;
>
>> In PostgreSQL 9.3.5, the query returns:
>> double_value, int_value
>> -2.5, -3
>> -1.5, -2
>> -0.5, -1
>> 0.5, 1
>> 1.5, 2
>> 2.5, 3
>
>> PostgreSQL 9.4.1, the query returns:
>> -2.5, -2
>> -1.5, -2
>> -0.5, 0
>> 0.5, 0
>> 1.5, 2
>> 2.5, 2
>
> FWIW, I get the latter behavior (round to nearest even) in all release
> branches, and I would say that one is correct. Not real sure why your
> 9.3 installation is misbehaving.
On a Windows 7 box with code compiled with MSVC 2010 I am seeing the
same behavior as Rich. This looks like a bug in ~9.3 that meritates
some attention assuming that the latter behavior is legit.
--
Michael