SPUG: Incorrect subtraction result
schuh at farmdale.com
Tue Aug 26 02:50:43 PDT 2008
On Tue, 26 Aug 2008, Christopher Howard wrote:
>I was hoping someone might help me figure what is wrong with
>some code I wrote.
The quick and simple answer is "don't use floating point numbers to
represent money". Currency transactions need to track pennies as though
they were integers, not 0.01.
Why not use floating point values? What is the binary representation of
0.01? Well, it can't be exactly described in binary, so there will always
be some sort of round off error when adding and subtracting pennies.
Solutions: Use integer pennies, dividing by 100 when displaying the values
as dollars (and use the integer pragma). There are also binary coded
Mike Schuh - Seattle, Washington USA
More information about the spug-list