BUG #14026: Problem to convert number to real
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
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
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