Lists: | pgsql-bugs |
---|
From: | carlos_penteado(at)yahoo(dot)com(dot)br |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #14026: Problem to convert number to real |
Date: | 2016-03-16 20:07:06 |
Message-ID: | 20160316200706.5227.26504@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 14026
Logged by: Carlos
Email address: carlos_penteado(at)yahoo(dot)com(dot)br
PostgreSQL version: 9.4.5
Operating system: windows
Description:
SELECT 109048.96::float, 0.96::float
RETURNS
109048.96;0.96
but
SELECT 109048.96::real, 0.96::real
RETURNS
109049;0.96
From: | John R Pierce <pierce(at)hogranch(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org, carlos_penteado(at)yahoo(dot)com(dot)br |
Subject: | Re: BUG #14026: Problem to convert number to real |
Date: | 2016-03-17 23:18:52 |
Message-ID: | 56EB3B5C.3020809@hogranch.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
On 3/16/2016 1:07 PM, carlos_penteado(at)yahoo(dot)com(dot)br wrote:
> SELECT 109048.96::float, 0.96::float
> RETURNS
> 109048.96;0.96
> but
> SELECT 109048.96::real, 0.96::real
> RETURNS
> 109049;0.96
float with unspecified precision is treated as double precision. real is
by definition single precision, which is only accurate to around 6 digits.
see http://www.postgresql.org/docs/current/static/datatype-numeric.html
--
john r pierce, recycling bits in santa cruz
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | carlos_penteado(at)yahoo(dot)com(dot)br |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #14026: Problem to convert number to real |
Date: | 2016-03-17 23:25:29 |
Message-ID: | 16337.1458257129@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
carlos_penteado(at)yahoo(dot)com(dot)br writes:
> SELECT 109048.96::float, 0.96::float
> RETURNS
> 109048.96;0.96
> but
> SELECT 109048.96::real, 0.96::real
> RETURNS
> 109049;0.96
"float" means float8, while "real" means float4. Per
http://www.postgresql.org/docs/9.5/static/datatype-numeric.html#DATATYPE-FLOAT
PostgreSQL also supports the SQL-standard notations float and float(p)
for specifying inexact numeric types. Here, p specifies the minimum
acceptable precision in binary digits. PostgreSQL accepts float(1) to
float(24) as selecting the real type, while float(25) to float(53)
select double precision. Values of p outside the allowed range draw an
error. float with no precision specified is taken to mean double
precision.
regards, tom lane