Ü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.