Python2とPython3とで1/9*10の結果が違う

Python2とPython3とで1/9*10の結果が違うんですね。ちょっとはまりました。pythonコマンドで正しく動かないプログラムがあり、あれっと思ってpython3で動かしたら正しく動いて、えっと思ったという話です。

a = int(1/9)
b = int(1/9*10)
c = int(1*10/9)

print('int(1/9)=>'+str(a))
print('int(1/9*10)=>'+str(b))
print('int(1*10/9)=>'+str(c))

こういうプログラムを用意するとわかります。実行結果は下記。

$ python a.py 
int(1/9)=>0
int(1/9*10)=>0
int(1*10/9)=>1
$ python3 a.py 
int(1/9)=>0
int(1/9*10)=>1
int(1*10/9)=>1

python2だと1/9*10のとき、1/9を先に計算するのですね。python3だと1*10を先に計算します。どちらでも動くようにするには1*10/9とプログラマーが積を先にまとめてあげればいいのですが、まぁ、それぐらいコンピュータがよろしくやってくれよってことでpython3のように動くのがありがたいですかね。

同じタグの記事: Python
同じカテゴリの記事: Program