## Java の係数演算子 (%) が負の数値に対して負の結果を返すのはなぜですか?

Susan Sarandon
リリース: 2024-10-29 12:39:30
オリジナル
234 人が閲覧しました

## Why Does Java's Modulus Operator (%) Return Negative Results for Negative Numbers?

Java でのモジュラス計算: 負の数値の処理

Java では、負の数値に対してモジュラス演算を実行すると、予期しない結果が生じることがよくあります。負の数値に係数演算子 (%) を適用すると、正の値が得られることが期待されますが、場合によっては、負の結果が返されることがあります。この動作を理解するには、モジュラス計算の内部動作を詳しく調べることが重要です。

モジュラス演算子は、ある数値を別の数値で除算したときの余りを計算します。正の数の場合、剰余は一貫して正になります。ただし、負の数を扱う場合、モジュラスの定義は 2 つあります:

  1. Floored Modulus: この定義は、負の無限大に向かって剰余を最も近い整数に切り捨てます。
  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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート