Pythonの「//」演算子(フロア除算)とは?正の数・負の数での挙動を解説
Pythonにおける「//」演算子の基本
Pythonでは、「//」はフロア除算(floor division)と呼ばれる演算子として定義されています。通常の除算「/」が浮動小数点数の結果を返すのに対し、「//」は除算の結果から小数点以下を切り捨てた値を返します。
例えば、10 // 3 の結果は 3 となります。これは、10 ÷ 3 = 3.333... の小数部分を切り捨てた値です。
>>> 10 // 3 3 >>> 125.5 // 2.5 50.0 >>> 12.5 // 1.5 8.0
なお、オペランドのどちらか一方でも浮動小数点数(float)が含まれている場合、結果は 50.0 や 8.0 のようにfloat型で返される点にも注意してください。両方が整数(int)の場合のみ、結果もint型になります。
負の数を除算した場合の挙動
フロア除算で注意すべきポイントは、負の数を扱う場合です。このとき、結果は単純に小数点以下を切り捨てるのではなく、負の無限大の方向へ丸められます(いわゆる「床関数(floor)」による丸め)。
そのため、直感とは異なる結果になることがあります。
>>> -10 // 3 -4 >>> -73 // 9 -9
-10 ÷ 3 = -3.33... ですが、結果は -4 となります。これは、-3.33... をゼロ方向に切り捨てると -3 になる一方、負の無限大方向に丸めると -4 になるためです。-73 // 9 の場合も同様に、-8.11... が -9 へと丸められています。
まとめ
- 「
//」はフロア除算を行い、商の整数部分を返す演算子である - 正の数同士の除算では、小数点以下が切り捨てられた結果になる
- 負の数が含まれる場合は、負の無限大方向へ丸められるため、結果が予想より1小さくなることがある
- float型のオペランドが含まれる場合、結果はfloat型で返る
割り算の結果を整数として扱いたい場面や、リストのインデックス計算などで均等に分割したい場合に、「//」演算子は非常に便利です。負の数を扱う際の丸め方向には十分注意して使用しましょう。
-
Pythonのre.search()関数とは?正規表現で文字列を検索する方法を解説
Pythonにおいて、search()は標準ライブラリのreモジュールに含まれるメソッドの一つです。正規表現パターンを使って文字列内を検索し、パターンに一致する最初の部分を見つけるために使用されます。search()の構文re.search(pattern, string)第一引数には検索したい正規表現パターン、第二引数には検索対象となる文字列を指定します。re.match()との違いre.search()はre.match()とよく似ていますが、決定的な違いがあります。re.match()は文字列の先頭でのみ一致を判定するのに対し、re.search()は文字列全体から任意の位置にあるパター
-
Pythonのmatch()関数とは?reモジュールの基本と使い方を解説
Pythonでは、match()は標準ライブラリのreモジュールが提供するメソッドの一つで、文字列の先頭が指定した正規表現パターンと一致するかどうかを判定するために使用されます。 構文 match()の基本構文は以下の通りです。 re.match(pattern, string) このメソッドは、パターンが文字列の先頭で一致した場合にのみマッチオブジェクトを返します。例えば、文字列「TP Tutorials Point TP」に対してパターン「TP」を検索すると、文字列が「TP」で始まっているためマッチします。しかし、パターンとして「Tutorials」を指定した場合、文字列の先頭に存在し