Modulusberechnungen in Java: Umgang mit negativen Zahlen
In Java führt die Durchführung von Modulusoperationen mit negativen Zahlen oft zu unerwarteten Ergebnissen. Wenn man den Moduloperator (%) auf eine negative Zahl anwendet, könnte man erwarten, einen positiven Wert zu erhalten, aber in manchen Fällen wird ein negatives Ergebnis zurückgegeben. Um dieses Verhalten zu verstehen, ist es wichtig, in die Funktionsweise von Modulberechnungen einzutauchen.
Der Moduloperator berechnet den Rest, wenn eine Zahl durch eine andere dividiert wird. Bei positiven Zahlen ist der Rest durchweg positiv. Beim Umgang mit negativen Zahlen gibt es jedoch zwei mögliche Definitionen des Modulus:
Java verwendet die Definition des abschneidenden Moduls. Wenn man also eine negative Zahl durch eine positive Zahl dividiert, ist der Rest immer negativ. Beispielsweise wird -13 % 64 in Java zu -13 ausgewertet, da -13 ohne Bruchteil durch 64 geteilt wird.
Wenn man einen positiven Rest für negative Eingaben wünscht, kann das folgende Codefragment verwendet werden:
int r = x % n;
if (r > 0 && x Wenn man umgekehrt einen negativen Rest für negative Eingaben bevorzugt, kann das folgende Code-Snippet verwendet werden:
int r = x % n;
if (r Das Verständnis der unterschiedlichen Moduldefinitionen ist von entscheidender Bedeutung, wenn Sie mit negativen Zahlen in verschiedenen Programmiersprachen arbeiten. Durch das Verständnis der Unterschiede zwischen Floored- und Truncating-Modulus können Entwickler sicherstellen, dass sich ihr Code wie beabsichtigt verhält, insbesondere beim Umgang mit negativen Eingaben.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3