Modulberechnung mit negativen Zahlen in Java
In Java gibt der Moduloperator (%) den Rest nach der Division zweier Zahlen zurück. Beim Umgang mit negativen Zahlen ist das Ergebnis jedoch möglicherweise nicht wie erwartet.
Problem:
Ein Entwickler stößt auf ein unerwartetes Ergebnis, wenn er Modulberechnungen mit negativen Zahlen durchführt. konkret -13 % 64. Anstelle des gewünschten Ergebnisses von 51 ist das Ergebnis -13.
Erklärung:
Die Definition des Moduls für negative Zahlen variiert je nach Programmierung Sprachen. In Java hat der vom Modulo-Operator zurückgegebene Rest das gleiche Vorzeichen wie der Dividend (Zähler). Daher ergibt -13 % 64 -13.
Lösung:
Um das gewünschte Ergebnis von 51 zu erhalten, kann die folgende Korrektur angewendet werden:
<code class="java">int r = x % n; if (r > 0 && x < 0) { r -= n; }</code>
Dieser Code stellt sicher, dass der Rest positiv ist, wenn die Dividende negativ ist.
Alternativ kann die folgende Anpassung erfolgen, wenn die Sprache einen negativen Rest für negative Eingaben zurückgibt und der Entwickler ein positives Ergebnis bevorzugt gemacht:
<code class="java">int r = x % n; if (r < 0) { r += n; }</code>
Dieser Code wandelt den negativen Rest in einen positiven Wert um.
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die mit dem Frageformat spielen: * **Warum ist -13 % 64 nicht 51 in Java?** (Einfach und direkt) * **Java-Modul-Operator und negative Zahlen: So erhalten Sie das erwartete Ergebnis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!