On Mar 17, 2010, at 1:59 PM, Steven D'Aprano wrote:
On Thu, 18 Mar 2010 07:44:21 am Raymond Hettinger wrote:
The spectrum of options from worst to best is
1) compare but give the wrong answer
2) compare but give the right answer
3) refuse to compare.
Why is 3 the best? If there is a right answer to give, surely giving the
right answer it is better than not?
From the early days of the decimal module,
we've thought that mixed float-decimal operations
are 1) a bit perilous and 2) have few, if any good
use cases.
Accordingly, any mixed operations should be explicit
rather than implicit:
Decimal('1.1') + Decimal.from_float(2.2)
is better than:
Decimal('1.1') + 2.2
To help the user avoid confusion, we flag the latter with a TypeError:
unsupported operand type(s) for +: 'Decimal' and 'float'.
Unfortunately, in Py2.x, implicit mixed comparisons do not
raise an exception, and instead will silently fail by giving
an incorrect answer:
>>> Decimal('1.1') < 2.2
False
IMO, raising the exception is the right thing to do.
Short of that though, if we're going to give a result,
it should at least be a correct one.
Raymond
New zen:
* right answers are better wrong
* but ill-formed questions are best not answered at all