Negative Modulwerte in Java
Ursprüngliche Frage:
Bei Verwendung des Modulo-Operators in In Java führen negative Zahlen manchmal zu einem negativen Wert. Beispielsweise ergibt die Berechnung von int i = -1 % 2 -1, während in Python dieselbe Berechnung 1 zurückgibt.
Erklärung:
Der Unterschied im Verhalten zwischen Java und Python ergeben sich aus der Unterscheidung zwischen Modul- und Restoperationen. In Python führt der %-Operator die Modulo-Operation aus, die auch bei negativen Eingaben immer ein positives Ergebnis zurückgibt. Im Gegensatz dazu berechnet der %-Operator von Java den Rest, der bei negativen Eingaben negativ sein kann.
Lösung:
Um das gleiche Verhalten wie Pythons Modulo-Operation in Java zu erreichen, Man kann diesen Ansätzen folgen:
<code class="java">int i = (((-1 % 2) + 2) % 2);</code>
In diesem Ausdruck wird die Moduloperation zuerst innerhalb des ausgeführt Klammern, was einen negativen Wert ergibt. Durch Addition von 2 wird das Ergebnis in den positiven Bereich verschoben, und eine abschließende Moduloperation stellt sicher, dass es innerhalb des Bereichs [0, 1] liegt.
<code class="java">int i = -1 % 2; if (i < 0) i += 2;</code>
Hier wird zuerst die Moduloperation mit einer negativen Zahl ausgewertet. Wenn das Ergebnis negativ ist, wird es um 2 erhöht, um den positiven Modul zu erhalten.
Die Wahl des Ansatzes hängt von den spezifischen Anforderungen und der Einfachheit der Integration in die vorhandene Codebasis ab.
Das obige ist der detaillierte Inhalt vonWarum liefert der Modulo-Operator von Java negative Werte für negative Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!