1. ホーム
  2. java

[解決済み] JavaでのModは負の数を生成する [重複]。

2022-04-22 15:26:57

質問

を計算すると int i = -1 % 2 となります。 -1 をJavaで表示します。Pythonでは 1 の結果として -1 % 2 . Javaでmodulo関数を使って同じ動作をさせるにはどうしたらよいでしょうか?

どのように解決するのですか?

ここで問題なのは、Pythonでは%演算子が返すのは モジュラス を返し、Javaでは 余り . これらの関数は正の引数に対しては同じ値を与えますが、モジュラスは負の入力に対して常に正の結果を返すのに対し、余りは負の結果を与えることがあります。 それについての詳しい情報は この質問 .

こうすれば、正の値を求めることができます。

int i = (((-1 % 2) + 2) % 2)

またはこれです。

int i = -1 % 2;
if (i<0) i += 2;

(当然ながら-1や2は分子や分母にしたいものであれば何でもよい)