But to get the pennies right on a $10,000 USD transaction converted into GBP (UK Pounds), you need all the official precision that there is. And if your calculation is off by 4 cents, some of those accounting folk are liable to thrash you mercilessly over it. If you get calculations WRONG, they get really uncomfortable, and want to know why.
What I have done is store the currency amounts as bigints, at the same precision defined for the currency (ie cents for dollars, pence for pounds, etc). This guarantees that you don't get any rounding errors when storing the figures as a floating point type. When manipulating the numbers, I use Java BigDecimals, which don't lose any precision either, and convert back to bigints to store in the database.
YMMV.
Regards, Graham --
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?
http://archives.postgresql.org