Re: PreparedStatement rounds doubles to scale 14 during update

From: "Heikki Linnakangas" <heikki(at)enterprisedb(dot)com>
To: "Peter Kovacs" <maxottovonstirlitz(at)gmail(dot)com>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: PreparedStatement rounds doubles to scale 14 during update
Date: 2007-09-05 14:07:11
Message-ID: 46DEB80F.40008@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Peter Kovacs wrote:
> One last question:
>
> How come that Java double, which is an 8 byte size floating point
> number, cannot fit in PostgreSQL's double precision type, which is
> equally a floating point type and 8 bytes in size?

Hmm. I'm not sure when the truncation happens. The value might actually
still be intact when it's converted from text representation to double,
and loses precision in the conversion from float8 to decimal. It's
possible to have a floating point value in the database that you can't
get out in text format without losing precision. Consider this for example:

postgres=# SELECT
'6.118992224252588'::float8,
'6.11899222425259'::float8,
'6.11899222425259'::float8 = '6.118992224252588'::float8;
float8 | float8 | ?column?
------------------+------------------+----------
6.11899222425259 | 6.11899222425259 | f
(1 row)

Both values are rounded to the same value on output, but if you compare
them, they're actually not equal.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Tom Lane 2007-09-05 15:07:24 Re: JDBC driver works in ccommand line, not in Tomcat5
Previous Message Richard Broersma Jr 2007-09-05 14:05:40 Re: PreparedStatement rounds doubles to scale 14 during update