Java でのモジュラス計算: 負の数値の処理
Java では、負の数値に対してモジュラス演算を実行すると、予期しない結果が生じることがよくあります。負の数値に係数演算子 (%) を適用すると、正の値が得られることが期待されますが、場合によっては、負の結果が返されることがあります。この動作を理解するには、モジュラス計算の内部動作を詳しく調べることが重要です。
モジュラス演算子は、ある数値を別の数値で除算したときの余りを計算します。正の数の場合、剰余は一貫して正になります。ただし、負の数を扱う場合、モジュラスの定義は 2 つあります:
Java は切り捨てモジュラス定義を使用します。したがって、負の数を正の数で割ると、剰余は常に負になります。たとえば、-13 % 64 は、Java では -13 と評価されます。これは、-13 は小数部分なしで 64 で除算されるためです。
負の入力に対して正の剰余が必要な場合は、次のコード スニペットを使用できます。
<code class="java">int r = x % n; if (r > 0 && x < 0) { r -= n; }</code>
逆に、負の入力に対して負の剰余を使用したい場合は、次のコード スニペットを使用できます。
<code class="java">int r = x % n; if (r < 0) { r += n; }</code>
負の数を扱う場合、係数のさまざまな定義を理解することが重要です。さまざまなプログラミング言語で。フロアモジュラスとトランケートモジュラスの違いを理解することで、開発者は、特に負の入力を扱う場合に、コードが意図したとおりに動作することを確認できます。
以上が## Java の係数演算子 (%) が負の数値に対して負の結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。