Normalmente la operación de módulo también se llama operación de resto, ambas devuelven el resto..remymodLa única diferencia es:
Cuando x e y tienen el mismo signo, los resultados de ambas funciones son equivalentes; cuando x e y tienen signos diferentes, el signo del resultado de la función rem es el mismo que el de x, mientras que el de mod es el mismo que el de y.
Esto se debe a que los mecanismos de generación de estas dos funciones son diferentes: la función rem usa la función fix, mientras que la función mod usa la función floor (estas dos funciones sirven para redondear; fix redondea hacia 0, y floor redondea hacia el infinito negativo). El comando rem(x, y) devuelve x - n.*y; si y no es igual a 0, donde n = fix(x./y). Por otro lado, mod(x, y) devuelve x - n.*y; cuando y no es igual a 0, n = floor(x./y).
Regla para el módulo de dos enteros con signos opuestos (esta regla también se aplica a decimales; parece que esto no es igual que en el lenguaje C).
Primero considera los dos enteros como positivos y luego realiza la operación de división:
- 1. Cuando son divisibles exactamente, el valor es 0.
- 2. Cuando no son divisibles exactamente, el valor = divisor × (cociente entero + 1) - dividendo.
Ejemplo:mod(36,-10)=-4
Es decir: el cociente entero de 36 dividido entre 10 es 3, más 1 da 4; su producto con el divisor es 40; luego la diferencia con el dividendo es (40-36=4); se toma el signo del divisor. Por lo tanto el valor es -4.
Ejemplo: mod(9,1.2)=0.6;
Ejemplo:
>> 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
Tómate tu tiempo para entenderlo; ciertamente son diferentes.