From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | JT Kirkpatrick <jt-kirkpatrick(at)mpsllc(dot)com> |
Cc: | "'pgsql-admin(at)hub(dot)org'" <pgsql-admin(at)hub(dot)org>, "'pgsql-sql(at)hub(dot)org'" <pgsql-sql(at)hub(dot)org> |
Subject: | Re: [SQL] float4 |
Date: | 1999-06-28 23:32:07 |
Message-ID: | 18537.930612727@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
JT Kirkpatrick <jt-kirkpatrick(at)mpsllc(dot)com> writes:
> we made all monetary fields FLOAT4's. weird stuff -- or maybe not to you
> -- we insert 23516.69 into a float4 field directly in psql, and then select
> it, and it shows 23516.7. this is not good for a field used for MONEY!!!
Yup, no surprise. float4 is good to about 6 decimal digits on most
machines, and yours is evidently right in there with the pack.
float8 is good to about 16 digits on most hardware, but I wouldn't
really recommend it either if you need guaranteed-exact calculations.
The money type in Postgres is a fairly crude hack that I can't recommend
(it's basically an int4 representing cents, and will therefore poop out
at 2^31 cents or about $20million).
What you really want is the general "numeric" type added in Postgres 6.5
--- decimal representation with as many digit positions as you specify.
It's a good deal slower for calculations than native floats,
unfortunately, especially if you use a very wide numeric field.
But calculations per-se are seldom the bottleneck for a database
application...
BTW, the current plan is to phase out the money type in favor of numeric
in some future release.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Unprivileged user | 1999-06-29 17:46:50 | Port Bug Report: parse error not detected on unterminated quote |
Previous Message | Don Garrett | 1999-06-28 20:30:46 | Re: [ADMIN] float4 |