Re: [SQL] float4 - Mailing list pgsql-sql

From Tom Lane
Subject Re: [SQL] float4
Date
Msg-id 18537.930612727@sss.pgh.pa.us
Whole thread Raw
In response to float4  (JT Kirkpatrick <jt-kirkpatrick@mpsllc.com>)
List pgsql-sql
JT Kirkpatrick <jt-kirkpatrick@mpsllc.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


pgsql-sql by date:

Previous
From: Don Garrett
Date:
Subject: Re: [ADMIN] float4
Next
From: "Hostmaster - Internet au Virtuel Inc."
Date:
Subject: User defined functions through ODBC