Re: Strange results when casting string to double

From: Carsten Klein <c(dot)klein(at)datagis(dot)com>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Strange results when casting string to double
Date: 2022-02-17 09:25:37
Message-ID: 3b3ac2ef-c06b-1455-3bfd-70fbaa2571c8@datagis.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Peter J. Holzer 2022-02-17 09:27:39 Re: Strange results when casting string to double
Previous Message celati Laurent 2022-02-17 08:53:51 Give default privileges to another SuperUser ?