Re: PreparedStatement rounds doubles to scale 14 during update

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: PreparedStatement rounds doubles to scale 14 during update
Дата
Msg-id 46DEB80F.40008@enterprisedb.com
обсуждение исходный текст
Ответ на Re: PreparedStatement rounds doubles to scale 14 during update  ("Peter Kovacs" <maxottovonstirlitz@gmail.com>)
Ответы Re: PreparedStatement rounds doubles to scale 14 during update
Список 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 по дате отправления:

Предыдущее
От: Richard Broersma Jr
Дата:
Сообщение: Re: PreparedStatement rounds doubles to scale 14 during update
Следующее
От: Tom Lane
Дата:
Сообщение: Re: JDBC driver works in ccommand line, not in Tomcat5