Re: Strange results when casting string to double

Поиск
Список
Период
Сортировка
От Carsten Klein
Тема Re: Strange results when casting string to double
Дата
Msg-id 3b3ac2ef-c06b-1455-3bfd-70fbaa2571c8@datagis.com
обсуждение исходный текст
Ответ на Re: Strange results when casting string to double  (Thomas Kellerer <shammat@gmx.net>)
Список pgsql-general
On Thu, Feb 17, 2022 at 09:41 AM Thomas Kellerer wrote:
> Carsten Klein schrieb am 16.02.2022 um 14:27:
Ah, man versteht sich :)
>> I'm using several (now unsupported) PostgreSQL 9.3.24 servers on
>> different (ancient) Ubuntu 14.04 LTS machines. On only one of those
>> servers, I get strange/wrong results when converting a string into a
>> double value:
>>
>> SELECT 1.56::double precision;
>>
>> --> 1.55999999999999   (wrong!)
>>
>> Although I do not find any differences in configuration, on all other servers the result looks like this
(correct?):
>>
>> SELECT 1.56::double precision;
>>
>> --> 1.56               (correct!)
>>
> 
> I wonder if extra_float_digits is different between those  systems
> Maybe initialized by differently configured SQL clients.

As I've seen in the sources in file /src/backend/utils/adt/float.c, 
extra_float_digits is used when converting double precision values back 
to text only. The binary (BIT) representation if the double value's 
fraction (mantissa) tells me, that the actual double precision value is 
already wrong.

Also, extra_float_digits is constantly zero in my tests. I've only been 
using pgAdmin III for that and always ensured with

SELECT current_setting('extra_float_digits');

that it's zero.

Carsten




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

Предыдущее
От: celati Laurent
Дата:
Сообщение: Give default privileges to another SuperUser ?
Следующее
От: "Peter J. Holzer"
Дата:
Сообщение: Re: Strange results when casting string to double