On Sat, 20 Mar 2010 08:50:04 am Guido van Rossum wrote: > I'd like to reboot this thread. I've been spinning this topic in my > head for most of the morning, and I think we should seriously > reconsider allowing mixed arithmetic involving Decimal, not just > mixed comparisons. [Quick summary: embed Decimal in the numeric tower > but add a context flag to disallow implicit mixing of float and > Decimal.]
The last few days, I've argued against changing the prohibition against mixed arithmetic operations. But you've inspired me to go take a look at a module I've been neglecting, fractions, and I've learned that the Fraction type already fully supports arithmetic and comparisons with floats and ints. I'm extremely impressed -- I had no idea the numeric tower in 2.6 was this advanced. (I still do most of my work with 2.5.) Decimal appears to be the odd one: >>> f = Fraction(0) >>> d = Decimal(0) >>> 0 == 0.0 == 0j == f True >>> 0 == 0.0 == 0j == f == d False Not just odd in the sense of "different", but also odd in the sense of "weird": >>> d == 0 == 0.0 == 0j == f True [...] > I'd like to look at the issue by comparing the benefits and drawbacks > of properly embedding Decimal into the numeric tower. As advantages, > I see consistent behavior in situations like the above and more > intuitive behavior for beginners. Also, this would be a possible road > towards eventually supporting a language extension where floating > point literals produce Decimal values instead of binary floats. (A > possible syntax could be "from __options__ import decimal_float", > which would work similar to "from __future__ import ..." except it's > a permanent part of the language rather than a forward compatibility > feature.) That's far more ambitious than I was willing to even imagine, but now that you've suggested it, I like it. -- Steven D'Aprano _______________________________________________ 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