🔥

RubyとPythonで/の挙動が異なる

2024/11/07に公開

Pythonを触っていて5/2の計算をしたとき、自分がメインで使うRubyと挙動の違いがあったのでメモしておく。

Rubyで5/2をするとどうなるか?

5 / 2

答えは2が返る(整数除算される)。

> 5 / 2
=> 2

2.5と小数点まで返したいなら、どちらかの数値をFloat型にする必要がある。

> 5.0 / 2.0
=> 2.5

> 5.to_f / 2
=> 2.5

> 5 / 2.to_f
=> 2.5

なお、計算結果にto_fをしても期待する結果は得られない。

> (5 / 2).to_f
=> 2.0

これは(5 / 2)の結果が2を返すため、2にto_fをしても2.0にしかならないためだ。

PythonだとRubyと同じ書き方で小数点まで返るので脳内で切り替えが必要になるかもしれない。

print(5 / 2)
=> 2.5

# Pythonで整数部分のみを返したいなら // を使えばいい
print(5 // 2)
=> 2

Discussion