🔥
RubyとPythonで/の挙動が異なる
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