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 по дате отправления: