Zum Inhalt springen
OneKitly

Minus siebzehn modulo fünf hat zwei verschiedene Antworten

Veröffentlicht am 16.10.2026 · 3 Min. Lesezeit · Entwickler-Tools

Daniel Okonkwo

Daniel Okonkwo — Front-end-Entwickler und Tech-Redakteur bei OneKitly

Web-Performance · Dateiformate

Anhand von 2 Quellen geprüft

Profil ansehen →
Kurz gesagt

Der Rest von 17 geteilt durch 5 ist 2, da widerspricht niemand. Gib ihr einen negativen Dividenden, und die Antwort spaltet sich, denn die Sprachen streiten über den Quotienten, nicht über den Rest: −17 ÷ 5 ist entweder −3 mit Rest −2 oder −4 mit Rest 3, und beides erfüllt die Identität, dass Quotient mal Divisor plus Rest den Dividenden ergibt. Sprachen, die den Quotienten gegen null abschneiden — JavaScript, C, Java, Go —, liefern −2 und geben dem Rest das Vorzeichen des Dividenden. Solche, die abrunden — Python, Ruby und die MOD-Funktion in Tabellenkalkulationen —, liefern 3 und geben dem Rest das Vorzeichen des Divisors. Dieser Rechner folgt der ersten Konvention.

17 mod 5 ist überall 2. −17 mod 5 ist −2 in JavaScript, C und Java und 3 in Python, Ruby und einer Tabellenkalkulation. Beides ist richtig, und der Unterschied ist ein echter Fehler.

Der Fehler sieht immer gleich aus

Einen Index um ein Array wickeln zu lassen ist der Musterfall. Vorwärts mit (i + 1) % n verhält sich tadellos, also schreibt niemand zögernd (i − 1) % n für die Gegenrichtung — und in einer abschneidenden Sprache liefert das −1, wenn i null ist, was nichts indiziert und drei Bildschirme später als leere Karussellfolie oder Absturz in einem Reducer auftaucht. Die Abhilfe ist die Standardformel ((i − 1) % n + n) % n, die das Ergebnis in jeder Sprache positiv erzwingt: Für n = 5 und i = 0 ergibt sie 4, das letzte Element — genau das, was Rückwärtswickeln bedeuten sollte. Schreib sie einmal in eine Hilfsfunktion und denk nicht mehr daran.

Modulo ist die Arithmetik von allem Zyklischen

Uhren, Wochentage, Farbkreise, Ringpuffer und Hashtabellen leben davon, und die Prüfziffer auf der Rückseite einer Bankkarte ebenso. Überall dort, wo ein Wert wieder an den Anfang zurückkommen muss, ist der Rest das, was ihn zurückbringt — und einen Divisor als „wie viele Stunden auf diesem Zifferblatt“ zu lesen macht den meisten Modulo-Code auf einen Blick verständlich. Es erklärt auch, warum die Vorzeichenfrage praktisch so schwer wiegt: Eine Uhr, die −2 Uhr anzeigt, irrt nicht — man hat ihr nur nicht gesagt, dass dieses Zifferblatt nur Zahlen von 0 bis 4 zeigt.

Abgerundet (Python, Ruby, MOD)
Derselbe Ausdruck, zwei Sprachfamilien
AusdruckAbgeschnitten (JS, C, Java)Abgerundet (Python, Ruby, MOD)
17 mod 522
−17 mod 5−23
17 mod −52−3

Mit unserem eigenen Rechner durchgerechnet

Modulo-Rechner

Eingaben

Dividend
9
Divisor
3

Ergebnis

Rest (a mod b)
0
Quotient
3

Diese Zahlen stammen aus dem Rechner unten, sie sind nicht von Hand eingetragen — sie werden bei jeder Änderung des Tools neu berechnet.

Mit eigenen Zahlen nachrechnen →

Häufige Fragen

Was macht es mit Dezimalzahlen?
Es funktioniert weiter — der Rest von 17,5 durch 5 ist 2,5 —, aber binäre Gleitkommazahlen machen das Ergebnis an den Rändern unzuverlässig. Werte, die dezimal exakt aussehen, sind es binär nicht; ein Ausdruck, der auf null landen sollte, landet womöglich auf einer winzigen positiven Zahl oder auf dem Divisor selbst, und eine Prüfung „ist der Rest null“ scheitert dann an Zahlen, die sichtbar teilen. Wo diese Prüfung zählt, rechne zuerst in Ganzzahlen — in Cent statt in Euro, in Millisekunden statt in Sekunden — und halte das Modulo ganz vom Gleitkomma fern.
Welche Konvention ist vorzuziehen?
Die abrundende, wann immer du wählen kannst. Ein Rest, der stets das Vorzeichen des Divisors trägt, bleibt bei positivem Divisor im Bereich, den man wirklich will — also in fast jedem praktischen Fall — und macht die Umlauf-Hilfsfunktion überflüssig. Die abschneidende Konvention existiert vor allem, weil frühe Hardware so dividierte und C der Hardware folgte; sie hält sich durch Trägheit und Kompatibilität, nicht durch Verdienst. Da man die Sprache selten wählt, ist die nützliche Gewohnheit schlicht, vor jedem Modulo auf möglicherweise negativen Werten zu prüfen, in welcher man sich befindet.

Artikel, die dich interessieren könnten

Alle Ratgeber →

Ähnliche Tools

Quellen

Hast du einen Fehler in diesem Artikel entdeckt?