Re: [ADMIN] float4

From: Don Garrett <garrett(at)bgb-consulting(dot)com>
To:
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: [ADMIN] float4
Date: 1999-06-28 20:30:46
Message-ID: 3777DB76.DEF7B64E@bgb-consulting.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

You shouldn't use a float at all for exact amounts. Floats handle
arbitrary precision, but do it rounding off values somewhat. The way the
round off works is based on the (base 2) internal representation and so
it never quite seems to make sense in decimal. It's possible on some
machines/float formats to have "if (1.0 + 1.0 = 2.0)" evaluate to false.

When I first started programming, I did a very simple custom
accounting package using floats.... and had to go back and rewrite all
of it.

You will do better to use integers (no rounding at all) and consider
the contents to be the number of pennies involved, not dollars.

JT Kirkpatrick wrote:
>
> we have a database (linux, 6.4.2, new odbc, connections from msaccess /
> win98) -- access doesn't fully appreciate the monetary type in postgres, so
> 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!!!
> what are the limitations of float4? should i have used float8?
>
> thanks for any help you can offer. . .
>
> jt

--
Don Garrett dgarrett(at)acm(dot)org
BGB Consulting http://www.bgb-consulting.com/garrett

In response to

  • float4 at 1999-06-28 19:43:37 from JT Kirkpatrick

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 1999-06-28 23:32:07 Re: [SQL] float4
Previous Message JT Kirkpatrick 1999-06-28 19:43:37 float4