Re: BUG #12053: Strange behavior for numeric types with unspecified precision-scale - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #12053: Strange behavior for numeric types with unspecified precision-scale
Date
Msg-id 14914.1417017051@sss.pgh.pa.us
Whole thread Raw
In response to BUG #12053: Strange behavior for numeric types with unspecified precision-scale  (tommaso.sala@cla-it.eu)
Responses Re: BUG #12053: Strange behavior for numeric types with unspecified precision-scale  (Tommaso Sala <tommaso.sala@cla-it.eu>)
List pgsql-bugs
tommaso.sala@cla-it.eu writes:
> We found out that PgSql acts weirdly when using "numeric" type with
> UN-specified precision and scale
> Writing 0.001 via a .net DataAdapter to a numeric column with unspecified
> precision-scale results in a weird 0.00 value:
> if you later
> SELECT "that value" + 0.001 you get 0.002,
> but if you
> SELECT "that value" * 2 you get 0.00
> and
> SELECT "that value" * 5 gives a rounded 0.01
> Value in the database is correct, since if you TO_CHAR it, it gets printed
> correctly as .001, but if you SELECT it, you get 0.00
> Also, the weirder thing is that 0.000001 doesn't get truncated!

I think you must have some issues with the .Net adapter.  Postgres
itself doesn't give such inconsistent results:

regression=# create table t1 (f1 numeric);
CREATE TABLE
regression=# insert into t1 values (0.001);
INSERT 0 1
regression=# select * from t1;
  f1
-------
 0.001
(1 row)

regression=# select f1 + 0.001 from t1;
 ?column?
----------
    0.002
(1 row)

regression=# select f1 * 2 from t1;
 ?column?
----------
    0.002
(1 row)

regression=# select f1 * 5 from t1;
 ?column?
----------
    0.005
(1 row)

            regards, tom lane

pgsql-bugs by date:

Previous
From: Luciana Campos
Date:
Subject: Fwd: Rocks 6.1.1 with JDBC connection - What should be wrong?
Next
From: Tom Lane
Date:
Subject: Re: BUG #12070: hstore extension: hstore_to_json_loose produces invalid JSON