Greg Ewing wrote: > M.-A. Lemburg wrote: > >> You often have a need for controlled rounding when doing >> financial calculations > > You should NOT be using binary floats for money > in the first place.
Believe me: you have to if you want to do more advanced calculus related to pricing and risk analysis of derivatives. >> or in situations where you want to >> compare two floats with a given accuracy, > > Pseudo-rounding to decimal places is not > the right way to do that. The right way is > to compare the difference to a tolerance. This is not the same: if you round both value and then compare, you test a different interval than by taking the difference and applying a tolerance value comparison: >>> x = 1.12 >>> y = 1.124999 >>> round(x,2) == round(y,2) True >>> abs(x-y) < 1e-2 True yet: >>> y = 1.1275 >>> round(x,2) == round(y,2) False >>> abs(x-y) < 1e-2 True >> e.g. to work >> around rounding problems ;-) > > As Tim Peters has pointed out many times, > you can't fix binary/decimal representation > problems by rounding. There are always cases > that give a different result than you would > want. Right, but in most real-world cases it works :-) >> Hmm, looks like a YAGNI to me, > > In all my programming so far I've found > numerous uses for round-to-int, and exactly > zero uses for round-binary-float-to-decimal- > places. So from my point of view, the YAGNI > applies to the *current* behavour of round()! Most typical uses of round() don't use the optional argument, true, but I still fail to see what returning an integer instead of a float would buy you. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Aug 02 2006) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! :::: _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com