Pythonの整数のみの割り算について

Python,イメージ

AI実装検定のご案内

Pythonにおいて「整数のみの割り算」とは、小数点以下を切り捨てて整数の商だけを求める演算のことを指します。

これは特に床除算(floor division)とも呼ばれ、Pythonでは // 演算子を使います。

目次

基本構文と動作

result = a // b

ここで ab は整数または浮動小数点数(ただし、整数で使うのが一般的)、resultab で割った商のうち、小数点以下を切り捨てた整数になります。

例:

print(7 // 3)   # 出力: 2
print(10 // 2)  # 出力: 5
print(5 // 2)   # 出力: 2

通常の割り算 / との違い

結果
7 / 32.3333…float
7 // 32int(整数)

/ は常に 浮動小数点数を返すのに対して、//小数点以下を切り捨てた整数(もしくはfloatでの切り捨て) を返します。

負の数を含む場合の注意点

Pythonの // は「数学的な床関数(floor)に基づいた切り捨て」です。

つまり、「0に近い方向」ではなく「負の無限大方向に切り捨てる」ため、負の数の割り算では直感に反する結果になることがあります。

print(7 // 3)    # 2
print(-7 // 3)   # -3 ← -2.333...を切り捨てて -3 に
print(7 // -3)   # -3
print(-7 // -3)  # 2

これは、以下の式を考えると納得がいきます。

a // b == floor(a / b)

Pythonでは、負の商の切り捨て方向が「小さい方」に向かうという仕様になっていることに注意が必要です。

divmod()との違い

Pythonには divmod(a, b) という便利な関数もあります。

これは 商と余りのタプル を一度に返す関数です。

divmod(-7, 3)  # (-3, 2)

これは実際には

(a // b, a % b)

と同等です。

浮動小数点との併用

//float に対しても使えますが、結果は float 型になります。

print(7.0 // 3)    # 2.0
print(-7.0 // 3)   # -3.0

補足:ゼロ除算には注意!

どんな割り算でも共通ですが、除数が 0 のときは ZeroDivisionError が発生します。

print(7 // 0)  # ZeroDivisionError: integer division or modulo by zero

この例外を避けたい場合は、事前にチェックを入れましょう。

まとめ

Python,イメージ
機能演算子特徴
通常の割り算/常に float を返す
整数のみの割り算(床除算)//小数点以下を切り捨てた int または float を返す
商と余りの両方取得divmod(a, b)(a // b, a % b) に相当
負の数の挙動// は floor(負無限大方向に切り捨て)

以上、Pythonの整数のみの割り算についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次