[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
http://docs.python.org/py3k/whatsnew/3.2.html#decimal-and-fractions
なお、自分の環境は Python-2.5.2 でした
コメント下さった方、ありがとうございました!