Search Postgresql Archives

Re: integer instead of 'double precision'?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2011-09-09 at 10:42 -0400, Henry Drexler wrote:
> take any table and run
> 
> Query
> ---------------------
> select
> 1/3
> from
> storage
> limit 1
> 
> 
> Result
> ---------------------
> ?column?
> integer
> 0
> 
> 
> Expected Result
> ---------------------
> ?column?
> double precision
> 0.33333...
> 
> 
> 
> Question
> ---------------------
> Since there is no column type to begin with as this is a made-up column,
> shouldn't postgres know it is double precision due to the remainder?
> 

You divide an integer with an integer, that should give you an integer.
And that's exactly what it does.

> I thought perhaps I could cast it as double precision as noted on
> http://www.postgresql.org/docs/8.3/interactive/sql-expressions.html
> 
> though doing the following:
> 
> select
> float8(1/3)
> from
> storage
> limit 1
> 
> results in:
> 
> float8
> double precision
> 0
> 

You still divide an integer with an integer. 1/3 as integers has a
result of 0. You then cast it to float which gives you the value 0 in
double precision.

> any ideas on how to get this type of a manufactured column (not sure the
> right term for it) to show the double precision result?

Sure, do select 1./3 from... or select float8(1)/3...


-- 
Guillaume
  http://blog.guillaume.lelarge.info
  http://www.dalibo.com


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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux