Heim >Java >javaLernprogramm >Warum liefert der Modulo-Operator von Java negative Werte für negative Zahlen?

Warum liefert der Modulo-Operator von Java negative Werte für negative Zahlen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 20:48:03435Durchsuche

Why Does Java's Modulo Operator Yield Negative Values for Negative Numbers?

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:

  1. Den Modul positiv nutzen:
<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.

  1. Prüfung auf Negativität:
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn