Python十进制比较
>>> from decimal import Decimal
>>> Decimal('1.0') > 2.0
True
我原本期望它能正确地转换2.0,但是在阅读PEP 327后,我理解了不将浮点数隐式转换为Decimal的一些原因,但在这种情况下,它不应该像现在这样引发TypeError吗?
>>> Decimal('1.0') + 2.0
Traceback (most recent call last):
File "<string>", line 1, in <string>
TypeError: unsupported operand type(s) for +: 'Decimal' and 'float'
所以其他运算符 / - % // 等都是一样的
所以我的问题是:
- 这种行为正确吗?(不引发 cmp 异常)
- 如果我派生出自己的类并编写一个浮点数转换器,基本上是 Decimal(repr(float_value)),有什么注意事项吗?我的用例只涉及价格比较。
系统详细信息:Ubuntu 8.04.1 上的 Python 2.5.2
Decimal(1.0) > 2.0
返回False
,这也是我对2.x的预期。 - guidot