Fredrik Lundh wrote: > "Cassiano, Marco" wrote: > > >>I have difficulties with a weird Python 2.4.2 behaviour in comparing >>Decimal to Floats. >> >>For Example : >> >> >> >>>>>from decimal import Decimal >>>>>a=Decimal('3.7') >>>>>b=6.3 >> >>>>>if a > b :print a,b,'a is greater than b - NOT TRUE!!!!' >> >>... else: print a,b,'b is greater than a - CORRECT' >>... >> >> >>3.7 6.3 a is greater than b - NOT TRUE!!!! > > > is this > > >>> 1.0 > "0" > False > > also a bug ? > > http://www.python.org/doc/ref/comparisons.html > > "Most other types compare unequal unless they are the > same object; the choice whether one object is considered > smaller or larger than another one is made arbitrarily but > consistently within one execution of a program."
It's not a bug, but it is a misfeature. In 3.0, I'd love to see nonsensical comparisons raise TypeError, but still keep the ability to sort lists of heterogeneous objects. One approach would be keep cmp(x,y) permissive in its arguments while making __gt__ and friends strict. Sorting would need to fall back __cmp__, if __lt__ either raised a type error or returned a non int (e.g., numpy arrays). This could probably be done by munging PyObject_RichCompareBool, but I haven't looked into it in any detail. My $0.02 -tim [SNIP] -- http://mail.python.org/mailman/listinfo/python-list