Michael Glaesemann wrote:


On Aug 31, 2004, at 8:55 PM, Rajesh Kumar Mallah wrote:

The docs says that numeric type supports numbers upto
any precision


<snip />

However

tradein_clients=# SELECT cast(2^100 as numeric);


<snip />

1. Does the specs not require pgsql to print a warning or info ,
  will it not be considered silient truncation of data.


AFAICS, the issue here is not the cast per se, but rather the power operation (2^100), which expects a double precision argument. This operation happens before the cast.


Looks like the power operation of numeric ie, numeric ^ numeric already exists
but it returns a double precision and the accuracy is getting lost. Shud numeric
^ numeric not be returning numeric instead?


Regds
mallah.

tradein_clients=# CREATE TABLE t_a as SELECT 1::numeric ^ 1::numeric as col;
SELECT
tradein_clients=# \d t_a
Table "public.t_a"
+--------+------------------+-----------+
| Column | Type | Modifiers |
+--------+------------------+-----------+
| col | double precision | |
+--------+------------------+-----------+







2. Is there any way to do such calculation using pgsql, i understand
  bc is a better tool for it.


What you need is a power operation for numeric, which I think you'd have to write yourself, possibly leveraging one of the procedural languages (perhaps pl/perl) to access such an operation (as you yourself mentioned). I'm sure you could find an algorithm to port to PL/pgsql as well.

Hope this helps.

Michael Glaesemann
grzm myrealbox com


!DSPAM:41346ebe315451222497446!




--

regds
Mallah.

Rajesh Kumar Mallah
+---------------------------------------------------+
| Tradeindia.com (3,11,246) Registered Users | | Indias' Leading B2B eMarketPlace |
| http://www.tradeindia.com/ |
+---------------------------------------------------+



---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Reply via email to