2015年11月22日

/ の結果はfloat

/ 演算子を int に用いた際の注意点について述べます。


Python 3 では、int / int の結果は常に float となります

>>> 10 / 3  # 結果はfloat
3.3333333333333335

>>> type(10 / 3)
<class 'float'>

>>> type(9 / 3)  # たとえ割り切れてもfloat
<class 'float'>

小数点以下を切り捨てた int の結果が欲しい場合には、// 演算子を使います。
>>> 10 // 3  # 結果はint
3

>>> type(10 // 3)
<class 'int'>

C言語をはじめとする「多くの言語」では、int / int の結果は int ですので、少々戸惑うところです。
そして何より、「多くの言語」の中には Python 2 も含まれています! Python 2 での / 演算子の演算結果を示します。
# Python 2
>>> 10 / 3
3

>>> type(10 / 3)
<type 'int'>

あくまで私見ですが、/ という基本演算子の挙動を前バージョンから変え、わざわざ変えた結果がプログラム界では少数派の挙動、というのは Python 3 の失敗だと思います。

0 件のコメント:

コメントを投稿