On 3/18/2010 12:34 PM, Steven D'Aprano wrote:
On Fri, 19 Mar 2010 05:27:06 am Glenn Linderman wrote:
Do you envisage any problems from allowing this instead?
Decimal('1.1')< 2.2
True
Yes.
As any non-naïve float user is aware, the proper form of float
comparisons is not to use< or> or == or !=, but rather, instead of
using< (to follow along with your example), one should use:
Decimal('1.1') - 2.2< epsilon
And yet we allow
1.1< 2.2
instead of forcing users to do the "proper form". One can only wonder
why the various standards (actual and de-facto) for floating point
allows comparisons at all.
Hard to tell
1.1 < 2.2
from the second line of
diff = 1.1 - 2.2
diff < epsilon
Hard to enforce the "proper form", without being omniscient, and the
"proper form" isn't always as simple as my example, to be truly proper
often requires a lot more code (and a lot more omniscience).
I'm +1 on adding an exception for Decimal/float comparisons, -0 on
allowing it to be turned off to achieve compatible behavior, since
Raymond pointed out that the compatible sorting behavior isn't stable in
the presence of int, Decimal, and float.
But they do, and so does Python, and frankly even if the only reason is
to satisfy lazy coders who don't have a requirement for high accuracy,
then that's a good reason in my book, and one equally applicable to
Decimal and float.
A point well understood, but I personally would rather force
Decimal/float comparisons to be explicitly converted to be lazily
compared, if the arithmetic operations are forced to be explicit.
_______________________________________________
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