BUG #14026: Problem to convert number to real

Started by Nonameabout 10 years ago3 messagesbugs
Jump to latest
#1Noname
carlos_penteado@yahoo.com.br

The following bug has been logged on the website:

Bug reference: 14026
Logged by: Carlos
Email address: carlos_penteado@yahoo.com.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

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2John R Pierce
pierce@hogranch.com
In reply to: Noname (#1)
Re: BUG #14026: Problem to convert number to real

On 3/16/2016 1:07 PM, carlos_penteado@yahoo.com.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

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: BUG #14026: Problem to convert number to real

carlos_penteado@yahoo.com.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

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs