
Hello

In PostgreSQL 7.2/7.1:

template1=# select text(2.000::numeric);
 text
------
 2
(1 row)

In 7.3:

template1=# select text(2.000::numeric);
 text
-------
 2.000
(1 row)

The text(numeric) function doesn't round numbers. :(

This is bug or feature? :)


							-Sygma

Sun, 1 Dec 2002 17:49:01 +0100 (CET)
=?iso-8859-1?Q?Szima_G=E1bor?= <sygma@tesla.hu>
numeric to text (7.3)
> template1=# select text(2.000::numeric);
>  text
> -------
>  2.000
> (1 row)
> 
> The text(numeric) function doesn't round numbers. :(
> 
> This is bug or feature? :)

I'd say feature in that it doesn't reduce the precision of the number.

-- 
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc
02 Dec 2002 13:35:47 -0500
Rod Taylor <rbt@rbt.ca>
Re: numeric to text (7.3)
On Mon, Dec 02, 2002 at 01:35:47PM -0500, Rod Taylor wrote:
> > template1=# select text(2.000::numeric);
> >  text
> > -------
> >  2.000
> > (1 row)
> > 
> > The text(numeric) function doesn't round numbers. :(
> > 
> > This is bug or feature? :)
> 
> I'd say feature in that it doesn't reduce the precision of the number.

... and, of course, you can round with:

joel@joel=# select round('2.000'::numeric);
 round
-------
      2
(1 row)

joel@joel=# select round('2.000'::numeric,2);
 round
-------
   2.00
(1 row)
	 

-- 

Joel BURTON  |  joel@joelburton.com  |  joelburton.com  |  aim: wjoelburton
Independent Knowledge Management Consultant

Mon, 2 Dec 2002 14:03:38 -0500
Joel Burton <joel@joelburton.com>
Re: numeric to text (7.3)

On Mon, 2 Dec 2002, Joel Burton wrote:

> joel@joel=# select round('2.000'::numeric);
>  round
> -------
>       2
> (1 row)
>
> joel@joel=# select round('2.000'::numeric,2);
>  round
> -------
>    2.00
> (1 row)

OK, but:

template1=# select round('2.001'::numeric);
 round
-------
     2
(1 row)

template1=# select round('2.001'::numeric,2);
 round
-------
  2.00
(1 row)


The good idea (in 7.2):

template1=# select text('2.000'::numeric);
 text
------
 2
(1 row)

template1=# select text('2.001'::numeric);
 text
-------
 2.001
(1 row)


This feature is missing from 7.3..

(new round function is good idea (e.g. fround(numeric))


							-Sygma

Mon, 2 Dec 2002 20:23:24 +0100 (CET)
=?iso-8859-1?Q?Szima_G=E1bor?= <sygma@tesla.hu>
Re: numeric to text (7.3)
> This feature is missing from 7.3..
> 
> (new round function is good idea (e.g. fround(numeric))

 double precision | pg_catalog | round          | double precision
 numeric          | pg_catalog | round          | numeric
 numeric          | pg_catalog | round          | numeric, integer

Looks like round still exists to me.

rbt=# select round('2.4555', 2);
 round 
-------
  2.46
(1 row)

-- 
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc
02 Dec 2002 14:37:12 -0500
Rod Taylor <rbt@rbt.ca>
Re: numeric to text (7.3)
On Mon, Dec 02, 2002 at 08:23:24PM +0100, Szima Gï¿½bor wrote:
> OK, but:
> 
> template1=# select round('2.001'::numeric);
>  round
> -------
>      2
> (1 row)
> 
> template1=# select round('2.001'::numeric,2);
>  round
> -------
>   2.00
> (1 row)
> 
> 
> The good idea (in 7.2):
> 
> template1=# select text('2.000'::numeric);
>  text
> ------
>  2
> (1 row)
> 
> template1=# select text('2.001'::numeric);
>  text
> -------
>  2.001
> (1 row)
> 
> 
> This feature is missing from 7.3..

Not sure I'd call it a feature -- ISTM that text(numeric) should show
all the precision you gave it, and not shave it down to the
least-precise number that is still equal.

Anyhoo, you can get what you want with some ugly-but-straightforward
trimming:

(in 7.3):

joel@joel=# select rtrim(rtrim('2.000'::numeric, '0'),'.');
 rtrim
-------
 2
(1 row)

joel@joel=# select rtrim(rtrim('2.001'::numeric, '0'),'.');
 rtrim
-------
 2.001
(1 row)


Easy enough to make this into a function trim_as_much(numeric) or
somesuch.

    
-- 

Joel BURTON  |  joel@joelburton.com  |  joelburton.com  |  aim: wjoelburton
Independent Knowledge Management Consultant

Mon, 2 Dec 2002 14:50:27 -0500
Joel Burton <joel@joelburton.com>
Re: numeric to text (7.3)

On Mon, 2 Dec 2002, Rod Taylor wrote:

>  double precision | pg_catalog | round          | double precision
>  numeric          | pg_catalog | round          | numeric
>  numeric          | pg_catalog | round          | numeric, integer
>
> Looks like round still exists to me.

Rod, you don't understand me. :)

I needn't round, or the valueless zeroes too.

It's good (in older version of pSQL):
2.000::numeric -> 2
2.001::numeric -> 2.001


It's "ugly" (in 7.3):
2.000::numeric -> 2.000
2.001::numeric -> 2.001
or
round(2.000::numeric,2) -> 2.00
round(2.001::numeric,2) -> 2.00


Joel had got a good idea:

joel@joel=# select rtrim(rtrim('2.000'::numeric, '0'),'.');
 rtrim
-------
 2
(1 row)

.. but i prefer the old text(numeric) function :)


Thanks!


							-Sygma

Mon, 2 Dec 2002 21:07:04 +0100 (CET)
=?iso-8859-1?Q?Szima_G=E1bor?= <sygma@tesla.hu>
Re: numeric to text (7.3)