On 29-Aug-2006, at 13:13 :48, Andrew Baerg wrote:
Hi,
I am getting strange results from the sum function as follows:
corp=# select amount from acc_trans where trans_id=19721 and
chart_id=10019;
amount
---------
4.88
117.1
-121.98
(3 rows)
corp=# select sum(amount) from acc_trans where trans_id=19721 and
chart_id=10019;
sum
----------------------
-1.4210854715202e-14
(1 row)
amount is defined as double precision. I noticed that if I cast amount
as numeric, the sum comes out 0 as expected.
Don't use floats or doubles for financial data, use numeric types.
Your double sum looks to be a normal error for floats in that situation.
Take a look at <http://www2.hursley.ibm.com/decimal/decifaq.html> for
some information about why you should be using numeric for your
amount column.
--
Seneca Cunningham
tentra@xxxxxxxxx