旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[Python] Decimal型とfloat型は比較出来ない

2011年7月10日

Decimalとint型の比較は成立しますが

>>> from decimal import Decimal
>>> Decimal('1.0') > 2
False
>>> Decimal('1.0') > 0
True

Decimalと浮動小数点型の比較は成立しませんでした

>>> from decimal import Decimal
>>> Decimal('1.0') > 2.0
True # ありゃりゃ
>>> Decimal('1.0') > 0.0
True
>>> float(Decimal('1.0')) > 2.0
False # キャストすれば比較可能

何でこうなのかは調べませんが
挙動はとりあえずこうでした

マニュアル: 10.4. decimal — 10進固定及び浮動小数点数の算術演算
http://www.python.jp/doc/release/library/decimal.html#module-decimal

追記: 2.7と3.2では改善されているようです

http://docs.python.org/whatsnew/2.7.html#new-and-improved-modules
http://docs.python.org/py3k/whatsnew/3.2.html#decimal-and-fractions

なお、自分の環境は Python-2.5.2 でした
コメント下さった方、ありがとうございました!