Re: Precision errors in float8 type casting (as of 7.3.2 and

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: Precision errors in float8 type casting (as of 7.3.2 and
Дата
Msg-id 20030709213211.R28062-100000@megazone23.bigpanda.com
обсуждение исходный текст
Ответ на Precision errors in float8 type casting (as of 7.3.2 and some earlier releases at least)  (Philip Edelbrock <phil@edgedesign.us>)
Список pgsql-bugs
On Wed, 9 Jul 2003, Philip Edelbrock wrote:

> phil=# select (3.85::float4)::float8;
>       float8
> ------------------
>  3.84999990463257
> (1 row)
>
> (Or substitute 3.85 for any number with something other than 0 to the
> right of the decimal point, or pull the same values from any table which
> stores in float4/real format.)
>
> Obviously, this is wrong and should return 3.85.  We traced this down on

I see no obviously about it.  Once you've placed a value in a float you
are accepting the chance of some precision loss.  When we print a float4
we can print it with an amount of precision that generally limits this
(although you'll see things like 3.849998 -> 3.5), but once you cast it to
a float8 those values are distinguishably different.  In theory one could
keep the history of the value around to determine a precision, but that
doesn't really seem better in general.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Shachar Shemesh
Дата:
Сообщение: Re: case sensitivity
Следующее
От: Stephan Szabo
Дата:
Сообщение: Re: Out of memory