Decimal arithmatic, was Re: Python GUI app to impress the boss?
Dan Bishop
danb_83 at yahoo.com
Fri Sep 20 15:28:44 EDT 2002
Magnus Lyckå <magnus at thinkware.se> wrote in message news:<3D8B1537.4010803 at thinkware.se>...
> ChrisBarker wrote:
> > The only reason I can see
> > to not writing your class in Python is performance, and unless you are
> > doing a lot of calculations, that is probably a non-issue.
>
> Performance issues might well matter in large financial
> systems, but that's not the only reason.
Please name one other real-world situation in which decimal arithmetic
is actually *needed*.
> [snip]
> And if someone would write
>
> x = Decimal(9.999999999999999) - Decimal(9.9999)
>
> they would not get what they expected (unless they
> expected 0.000099999999998). Ok, they could write
But how often does an error of 10 parts per trillion really matter?
Afaict, not nearly enough to justify having a default number
representation that works against the hardware.
> [major snippage]
> But perhaps a command line argument or something like
> "import exact_arithmetic" could change the behaviour to
> using exact instead of floating point arithmetic. I guess
> we'd need a module anyway, to specify things. Like:
>
> >>> import exact_arithmetics as exact
> >>> exact.default_rounding(exact.UP)
> >>> exact.default_fractions(2)
> >>> exact.max_precision = 20
> >>> 7.5/20
> 0.38
> >>>
In your proposal, is 1/3 exact? How about sqrt(2)?
What's so important about terminating decimal fractions that they
should get special treatment? It's true that they're useful for
currency calculations, but isn't a Money class enough?
More information about the Python-list
mailing list