Habituellement, l'opération modulo est aussi appelée opération de reste, et toutes deux renvoient le reste comme résultat..remetmodLa seule différence est :
Lorsque x et y ont le même signe, les résultats des deux fonctions sont identiques ; lorsque x et y ont des signes différents, le signe du résultat de la fonction rem est le même que celui de x, tandis que mod suit y.
Cela est dû au fait que les deux fonctions ont des mécanismes de génération différents : rem utilise la fonction fix, tandis que mod utilise la fonction floor (ces deux fonctions servent à l'arrondi ; fix arrondit vers 0, et floor arrondit vers l'infini négatif). La commande rem(x, y) renvoie x - n.*y. Si y n'est pas égal à 0, où n = fix(x./y). Et mod(x, y) renvoie x - n.*y ; lorsque y n'est pas égal à 0, n = floor(x./y).
Le schéma de valeurs pour le modulo de deux entiers de signes opposés (la même règle s'applique aux nombres décimaux ; cela semble différent du langage C)
On traite d'abord les deux entiers comme des nombres positifs, puis on effectue la division :
- 1. Lorsque c'est divisible, la valeur est 0
- 2. Lorsque ce n'est pas divisible, valeur = diviseur × (quotient entier + 1) - dividende
Exemple :mod(36,-10)=-4
C'est-à-dire : 36 divisé par 10 donne un quotient entier de 3, plus 1 donne 4 ; son produit avec le diviseur est 40 ; puis la différence avec le dividende est (40-36=4) ; on prend le signe du diviseur. Donc la valeur est -4.
Exemple : mod(9,1.2)=0.6 ;
Exemple :
>> 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
Prenez le temps de comprendre ; ils sont en effet différents.