12k
All articles

Pythonにおける `//` の意味(例を含む)

Pythonの二重スラッシュ演算子は床割り算を行い、結果を最も近い整数に切り捨てる。浮動小数点数、ループ、ページネーションでの動作も解説する。

OpenReplay Team
OpenReplay Team
Pythonにおける `//` の意味(例を含む)

Pythonでは、//床除算演算子 です。2つの数を割り、結果を最も近い整数に 切り下げ ます。

例えば:

print(10 // 3)  # 出力: 3
print(-10 // 3) # 出力: -4

重要なポイント

  • //床除算 を行い、結果を 切り下げ ます。
  • 整数浮動小数点数 の両方で動作します。
  • 常に 負の無限大 (-∞) に向かって 丸めます

床除算 (//) の理解

// 演算子は2つの数を割りますが、浮動小数点の結果を返す代わりに、最も近い整数に 切り捨て ます(切り下げます)。

例:

print(7 // 2)   # 出力: 3 (3.5ではなく)
print(-7 // 2)  # 出力: -4 (-∞に向かって丸める)

// は浮動小数点数をどのように扱うか?

オペランドの1つが 浮動小数点数 であっても、結果は浮動小数点形式で 床関数 が適用されたままです。

print(7.0 // 2)   # 出力: 3.0
print(-7.5 // 2)  # 出力: -4.0

/// の違い

演算子 説明 例 / 通常の除算 (浮動小数点数を返す) 5 / 2 = 2.5 // 床除算 (切り下げる) 5 // 2 = 2

// はいつ使うべきか?

  • 整数のみが必要な場合 (例: アイテムの数を数える)。
  • 浮動小数点数の精度エラーを回避する場合 (例: 配列のインデックス指定)。
  • ループ内で整数の結果を保証する場合

例:ページネーションに // を使用する:

items_per_page = 10
total_items = 95

pages = total_items // items_per_page
print(pages)  # 出力: 9

よくある質問

`//` は常に整数を返すのですか?

いいえ、オペランドの1つが浮動小数点数の場合、結果は浮動小数点数になります。

なぜ `-10 // 3` は `-3` ではなく `-4` を返すのですか?

`//` は負の無限大 (`-∞`) に向かって丸めるからです。

`//` は `math.floor(a / b)` と同じですか?

はい、`a // b` は `math.floor(a / b)` と等価です。

結論

Pythonの // 演算子は 床除算 を行い、結果を最も近い整数に 切り下げ ます。整数の計算、ループ、ページネーション を扱う際に便利です。

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers

We use cookies to improve your experience. By using our site, you accept cookies.