Üblicherweise wird die Modulo-Operation auch Restoperation genannt, und beide geben als Ergebnis den Rest zurück..remundmodDer einzige Unterschied ist:
Wenn x und y dasselbe Vorzeichen haben, sind die Ergebnisse der beiden Funktionen identisch; wenn x und y unterschiedliche Vorzeichen haben, ist das Vorzeichen des Ergebnisses der rem-Funktion dasselbe wie das von x, während mod y folgt.
Dies liegt daran, dass die beiden Funktionen unterschiedliche Erzeugungsmechanismen haben: rem verwendet die fix-Funktion, während mod die floor-Funktion verwendet (diese beiden Funktionen werden zum Runden verwendet; fix rundet gegen 0 und floor rundet gegen minus unendlich). Der Befehl rem(x, y) gibt x - n.*y zurück. Wenn y ungleich 0 ist, wobei n = fix(x./y). Und mod(x, y) gibt x - n.*y zurück; wenn y ungleich 0 ist, n = floor(x./y).
Das Wertemuster für Modulo zweier ganzer Zahlen mit entgegengesetzten Vorzeichen (dieselbe Regel gilt für Dezimalzahlen; dies scheint sich von der Sprache C zu unterscheiden)
Behandle beide ganzen Zahlen zunächst als positive Zahlen und führe dann die Division durch:
- 1. Wenn ohne Rest teilbar, ist der Wert 0
- 2. Wenn nicht teilbar, Wert = Divisor × (ganzzahliger Quotient + 1) - Dividend
Beispiel:mod(36,-10)=-4
Das heißt: 36 geteilt durch 10 ergibt den ganzzahligen Quotienten 3, plus 1 ergibt 4; das Produkt mit dem Divisor ist 40; die Differenz vom Dividenden ist dann (40-36=4); nimm das Vorzeichen des Divisors. Der Wert ist also -4.
Beispiel: mod(9,1.2)=0.6;
Beispiel:
>> mod(5,2) ans =1 % 除数是正,余数就是正 >> mod(-5,2) ans =1 >> mod(5,-2) ans =-1 % 除数是负,余数就是负 >> mod(-5,-2) ans =-1 % 用 rem 时,不管除数是正是负,余数的符号与被除数的符号相同 >> rem(5,2) ans =1 % 被除数是正,余数就是正 >> rem(5,-2); ans =1 >> rem(-5,2) ans =-1 % 被除数是负, 余数就是负 >> rem(-5,-2) ans =-1
Lass dir Zeit, um es zu verstehen; sie sind tatsächlich unterschiedlich.