python十进制比较
>>> from decimal import Decimal
>>> Decimal('1.0') > 2.0
True
我期待它能够正确转换 2.0,但是在阅读PEP 327之后,我明白有一些原因不会将浮点数隐式转换为十进制,但在这种情况下它不应该像在这种情况下那样引发 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