Re: round off problem
- Posted by Matt Lewis <matthewwalkerlewis at yahoo.com> Jun 28, 2004
- 453 views
George Walters wrote: > > I have imported general ledger data from a working system in another OS > into mysql using Matt's ODBC tools. Trying to finish the EU general > ledger software, I've run into serious round off issues. Here's a > couple of examples to show the problem. > > A typical account balance: > > Mysql shows -1143.46 which is correct > EU trace shows -1143.459961 which is not accurate to 15 places as the EU > manual states. > > Totalling the credits and debits over the entire file of transactions > gives the following (printing with a mask of %12.2f.) > > Debits = 4642782.63 > Credits= 4642782.56 > > Off by 4 cents. The input data from the other OS is balanced. It looks > like there's about 8 places of accuracy not 15. > The data records are always read into a sequence, then arithmetic is > done with atoms. > > Any Ideas? I think you may be having trouble with a 32-bit floating point number vs a 64-bit number. Try: ? float64_to_atom( atom_to_float64( 1143.46 ) ) ? float32_to_atom( atom_to_float32( 1143.46 ) ) I get: 1143.46 1143.459961 What are the actual datatypes in the MySQL database? And how are you checking the value from MySQL? You can see how odbc.ew converts data by looking at the convertData() function. Matt Lewis