Pythonの%と//の関係

Pythonの%は割り算のあまり、//は割り算の結果の整数部分になります。
例えば「5割る3」は「1.777」または「1あまり2」なので
5 % 3 == 2
5 // 3 == 1
となります。

注意したいのはマイナスの場合です。
(-5) // 3 == -2
(-5) % 3 == 1
となります。

a % b == x
a // b == y
とすると
a == b * y + x
という関係になります。

例えば「(-5)割る3」は「-1.777」なので
(-5) // 3 -> -2
となります。「-1」ではなく「-2」です。
a == -5, b == 3, y == -2
のとき
a == b * y + x
x == a – b * y
にあてはめると
x == -5 – 3 * (-2) == -5 – (-6) == -5 + 6 == 1
つまり
(-5) % 3 == 1
となります。

コメント

タイトルとURLをコピーしました