Skip site navigation (1) Skip section navigation (2)

Re: float to numeric(7,3)

From: Bryan Lee Nuse <nuse(at)uga(dot)edu>
To: "pgsql-novice(at)postgresql(dot)org" <pgsql-novice(at)postgresql(dot)org>
Subject: Re: float to numeric(7,3)
Date: 2012-03-10 16:04:10
Message-ID: 91A24D6F-E530-45E2-A39D-8E6EDDDB0760@uga.edu (view raw or flat)
Thread:
Lists: pgsql-novice
Hello Steve,

Using the ST_Distance function from PostGIS (http://www.postgis.org/docs/ST_Distance.html) which returns a float.

I would like to return the result of this function rounded to 3 decimal places. What is the best way to do that?


I can't claim it's the best way, but have you tried the following?  Substituting a different function for ST_Distance, for this example:


     sar=> SELECT round(pi()::numeric,3);

      round
     -------
      3.142
     (1 row)


If you want to specify the number of decimal places using round(), you have to cast the value as numeric.
You could cast the result directly to numeric(7,3) if you wanted:

     sar=> SELECT (pi()*1000)::numeric(7,3);

      numeric
     ----------
      3141.593
     (1 row)


...but that will fail if your value is too large:

     sar=> SELECT (pi()*10000)::numeric(7,3);

     ERROR:  numeric field overflow
     DETAIL:  A field with precision 7, scale 3 must round to an absolute value less than 10^4.


Hope that helps,
Bryan

In response to

pgsql-novice by date

Next:From: Tom LaneDate: 2012-03-10 16:14:53
Subject: Re: float to numeric(7,3)
Previous:From: Frank BaxDate: 2012-03-10 13:59:55
Subject: Re: float to numeric(7,3)

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group