Randall Fox wrote: > On Fri, 04 Jun 2004 23:46:06 -0400, you wrote: > > I was worried that once the number got put into a floating point notation, > the error would still creep up... >
The value 1.2 cannot be represented exactly in a (finite-length) binary number. On my machine, 1.2 gets stored as
1.1999999999999999555910790149937383830547332763671875
Whenever you print this out to a reasonable number of digits, it gets rounded to 1.2. But internally, the value is never 1.2. The value 1.2 simply cannot be stored in an 8-byte IEEE floating point number.
If you are storing dollars and cents, only 4 cents values out of 100 can be represented exactly in binary: 0.00, 0.25, 0.50, and 0.75. Any other cents value will be approximated. When you add up a large number of dollars+cents values, the approximation errors will hopefully cancel each other out and you will get a result that is a good approximation. But there are no guarantees. The errors might accumulate so that your answer is a penny or two different from what you accountant thinks it ought to be. If you need to be 100% dead-on accurate to the penny, you should store your dollars+cents values as an integer number of cents. -- D. Richard Hipp -- [EMAIL PROTECTED] -- 704.948.4565
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]