Why not FP for Money?
Peter Hansen
peter at engcorp.com
Wed Sep 22 08:22:23 EDT 2004
John Burton wrote:
> "Chris Barker" <Barkmann at gmail.com> wrote:
>>I've seen it suggested various times that one should use fixed point
>>for money, perhaps micro cents represented as integers. However, if
>>you do that, you need to make sure you do all the rounding correctly.
>
> On my version of python:
>
> # I spent £1 and 13 pence
> p = 1.13
>
> # How many pence is that?
> print int(p*100)
> 112
>
> # Oops
>
> You don't need quadrillions of dollars before you run into a value which
> can't be represented in a floating point value to such a degree that the
> rounding comes out wrong. Yes you could probably "fix" the rounding to make
At the risk of sounding like I might be supporting the idea of
using floats (which I'm not):
c:\>python
>>> p = 1.12
>>> print round(p*100)
112.0
>>> print int(round(p*100))
112
int() doesn't do rounding, it truncates. If you actually *do* round,
it tends to work just fine. If all operations ended with a call to
round(), the floating point idea would not really be as bad as you
suggest here... but it's still a bad idea. :-)
-Peter
More information about the Python-list
mailing list