Ganzzahldivison

Hallo,

ich soll ein kleines Java-Programm schreiben, in dem folgende Berechnungen durchgeführt werden:
x = m - (m / n * n)
y = m % n (Rest von m:n)

Ich verstehe aber nicht, warum bei beiden Rechnungen generell das selbe rauskommt. Kann mir das mal jemand erklären (am besten für ganz Doofe!)?

Danke schonmal

Hey.

x = m - (m / n * n)
y = m % n (Rest von m:n)

Ich verstehe aber nicht, warum bei beiden Rechnungen generell
das selbe rauskommt.

Es kommt bei den Rechnungen NICHT generell das selbe Ergebnis raus. Das ist nur in Java der Fall!

Das liegt daran, dass Java den Bruch m / n abrundet, falls m und n Ganzzahlen (Integer) sind. Falls also die Division keine Ganzzahl als Ergebnis hat, wird zur nächsten Ganzzahl abgerundet (Stichwort: floor).

Durch die Multiplikation mit n danach, kommt ein Wert zwischen m und m - n (also [m, m-n[) heraus.
Von m subtrahiert ergibt das irgendwas zwischen 0 und n (also [0, n[).
Das ist der Rest, der durch n nicht mehr ganzzahlig geteilt wird.

Siehe auch http://de.wikipedia.org/wiki/Gau%C3%9Fklammer.

Danke schonmal

Bitte schön.

Hallo,

x = m - (m / n * n)
y = m % n (Rest von m:n)

Wie schon erwähnt geht das nur, wenn beim Teilen automatisch abgerundet wird.

Die Modulo-Operation (m%n) ist ja „Rest der Division“, oder anders formuliert, "Ziehe so oft n von m ab, bis das Ergebnis