"James (Ke) Wang" <james.wang@sas.com> writes:
> * PostgreSQL ODBC driver version: 13.01.00
> * PostgreSQL database version: PostgreSQL 10.17 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red
Hat4.8.5-44), 64-bit
> * any error messages you saw on the screen: No. However the result from ODBC API is not expected, we expect the
ODBCdriver returns the result same to Psql utility. Please see the below logs.
You can get the same result in psql, if you set extra_float_digits
correctly:
regression=# select 51.3::float8;
float8
--------
51.3
(1 row)
regression=# set extra_float_digits = 2;
SET
regression=# select 51.3::float8;
float8
--------------------
51.299999999999997
(1 row)
So presumably either ODBC or something in your application is
setting that parameter.
FWIW, PG version 12 and newer won't do that; they use a newer
floating-point printing algorithm with less inclination to
produce silly-looking results.
regards, tom lane