Re: PreparedStatement rounds doubles to scale 14 during update - Mailing list pgsql-jdbc

From Heikki Linnakangas
Subject Re: PreparedStatement rounds doubles to scale 14 during update
Date
Msg-id 46DEB80F.40008@enterprisedb.com
Whole thread Raw
In response to Re: PreparedStatement rounds doubles to scale 14 during update  ("Peter Kovacs" <maxottovonstirlitz@gmail.com>)
Responses Re: PreparedStatement rounds doubles to scale 14 during update  (Kris Jurka <books@ejurka.com>)
List 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

pgsql-jdbc by date:

Previous
From: Richard Broersma Jr
Date:
Subject: Re: PreparedStatement rounds doubles to scale 14 during update
Next
From: Tom Lane
Date:
Subject: Re: JDBC driver works in ccommand line, not in Tomcat5