Python
には2種類の除算演算子があり、使い方に違いがあります。/
は浮動小数点除算
を行い、必ず小数を含む結果が返されます。一方、//
はフロア除算
(整数除算)を行い、小数点以下を切り捨てた整数が返されます。
/
と//
の違い
例えば、5 / 2
の結果は2.5
ですが、5 // 2
は2
になります。また、//
は整数だけでなく浮動小数点数でも使用可能で、5.0 // 2.0
は2.0
を返します。
Python 2とPython
3の違い
Python
2では、整数同士の除算(/
)は整数除算
を行い、結果が整数になります。しかし、Python
3では常に浮動小数点除算がデフォルトです。Python
2で同じ動作を得たい場合、from __future__ import division
を使って、Python
3の動作を有効にできます。
# Python 2
print(5 / 2) # 結果: 2
# Python 3
print(5 / 2) # 結果: 2.5
フロア除算と負の数
フロア除算//
は、負の数に対しても小数点以下を切り捨て、結果を負の無限大方向に丸めます。例えば、-5 // 2
は-3
を返します。これは、単純な切り捨てとは異なる動作です。
print(-5 // 2) # 結果: -3
まとめ
Python
で除算を行う際は、用途に応じて/
と//
を使い分けることが重要です。浮動小数点結果が必要な場合は/
を、整数結果が必要な場合は//
を使います。また、Python
2からPython
3への移行時には/
の挙動に注意が必要です。