Re: [SQL] float4

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

Browse pgsql-sql by date

  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