Merkwürdige Modulo Berechnung

Rolli

Mitglied
Hi,

habe eine Frage bzgl. dem Modulo Operator, und zwar gibt dieser mir merkwürdige Ergebnisse aus. Beispiel -1 mod 11. -1 = 11 * -1 +10 => Ergebnis = 10

Unter perl z.B. bekomme ich auch genau dieses ausgegeben. Java berechnet aber -1, was nicht richtig ist.

Kann mir das einer erklären bitte? 🙂

Viele Grüße
 
% ist ja auch nicht der mathematische Modulo-Operator, sondern einfach nur Divisionsrest. Also rechnet Java schon alles richtig
 
Bei Java kann das Ergebnis einer %-Rechnung auch negativ sein, siehe Expressions. Das ist leider bei den verschiedenen Programmiersprachen unterschiedlich.

Abhilfe:
int a = ...
int b = ...
int c = a % b;
if (c<0) c+=b;
 
Nicht dass ich wüsste. Wozu auch? Du kannst entweder so wie Marco es geschrieben hat "nachrüsten", oder
Java:
int c = (a%b+b)%b
rechnen, dann kriegst du immer ein positives ergebnis raus.
 

Zurück
Oben