为什么在Python 2.6.5中,“decimal.Decimal('0')<1.0”得出的结果是False?

5
在Python 2.6.5中,以下表达式的结果为False:
>>> import decimal
>>> decimal.Decimal('0') < 1.0
False

有没有解释为什么比较Decimal和float应该像这样表现的理由?

无法在Python 2.7或3.1上重现 - 这里没有安装2.6.5,所以无法进行检查。 - Tim Pietzcker
确认2.6.6 - 问题可能与以下代码有关:decimal.Decimal('0') + 1.0 引发 TypeError: unsupported operand type(s) for +: 'Decimal' and 'float' - eumiro
可能是Python十进制比较的重复问题。 - Joachim Sauer
是的,Python 2.4.4和2.5.2上都可以重现。 - Linus Kleen
1个回答

13

来自decimal模块文档

从版本2.7开始改变:现在,对于float实例x和Decimal实例y之间的比较,返回基于x和y的值的结果。在早期版本中,任何Decimal实例x和任何float实例y的x < y都返回相同(任意)的结果。

因此,看起来这是一个错误/缺失的功能,您所需要做的就是升级。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接