【发布时间】:2011-01-26 15:12:10
【问题描述】:
这在某种程度上与我的问题Why is ''>0 True in Python?
有关在 Python 2.6.4 中:
>> Decimal('0') > 9999.0
True
从answer 到我最初的问题,我了解到,在比较 Python 2.x 中不同类型的对象时,类型按名称排序。但在这种情况下:
>> type(Decimal('0')).__name__ > type(9999.0).__name__
False
那为什么是Decimal('0') > 9999.0 == True?
更新:我通常在 Ubuntu 上工作(Linux 2.6.31-20-generic #57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686 GNU/Linux, Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15) [GCC 4.4.1] on linux2)。在 Windows 上(WinXP Professional SP3, Python 2.6.4 (r264:75706, Nov 3 2009, 13:23:17) [MSC v.1500 32 bit (Intel)] on win32)我原来的说法不同:
>> Decimal('0') > 9999.0
False
我现在更疑惑了。 %-(
【问题讨论】:
-
我没有得到与您的第一个语句相同的结果。在我看来,它是假的。不过,对于您的第二个陈述,我确实得到了相同的结果。我也在使用 Python 2.6.4。
-
@Justin 这让我更加困惑,因为我检查了三次,它确实返回了
True -
使用python 3.1.1,第一条语句给出(导入Decimal后):
TypeError: unorderable types: Decimal() > float() -
@Justin 我再次检查了 Windows 框,它返回了
False%-( -
好吧,至少你已经学会了在生产代码中不要依赖这种类型的东西:)
标签: python comparison types operators logic