%
Python では、特に負の数値が関係する場合、演算子はどのように機能するのでしょうか?
たとえば、が ではなく と-5 % 4
評価されるのはなぜでしょうか?3
-1
ベストアンサー1
CやC++とは異なり、Pythonのモジュロ演算子(%
)は常に分母(除数)と同じ符号を持つ数値を返します。式は3を返します。
(-5) / 4 = -1.25 --> 下限(-1.25) = -2
(-5) % 4 = (-2 × 4 + 3) % 4 = 3.
Cの動作よりも非負の結果の方が有用な場合が多いため、この動作が選ばれます。例としては、曜日を計算する場合です。今日が火曜日(2日目)の場合、曜日は何曜日でしょうか?いいえ数日前?Pythonでは次のように計算できます
return (2 - N) % 7
しかしCでは、いいえ≥ 3 の場合、無効な数値である負の数が得られるため、手動で 7 を追加して修正する必要があります。
int result = (2 - N) % 7;
return result < 0 ? result + 7 : result;
(見るhttp://en.wikipedia.org/wiki/モジュロ演算子異なる言語で結果の符号がどのように決定されるかについては、こちらをご覧ください。