La guía paso a paso o código que encontrarás en este artículo es la solución más eficiente y efectiva que hallamos a esta duda o dilema.
Solución:
Antes de hacer preguntas de este tipo, consulte la documentación de MSDN.
Cuando divides dos números enteros, el resultado siempre es un número entero. Por ejemplo, el resultado de 7/3 es 2. Para determinar el resto de 7/3, utilice el operador de resto (%).
int a = 5;
int b = 3;
int div = a / b; //quotient is 1
int mod = a % b; //remainder is 2
También hay Math.DivRem
quotient = Math.DivRem(dividend, divisor, out remainder);
¡Hecho de la diversión!
La operación ‘módulo’ se define como:
a % n ==> a - (a/n) * n
Ref: Aritmética Modular
Vos tambien pudo ruede el suyo, aunque será MUCHO más lento que el operador % integrado:
public static int Mod(int a, int n)
return a - (int)((double)a / n) * n;
Editar: wow, me expresé bastante mal aquí originalmente, gracias @joren por atraparme
Ahora, aquí confío en el hecho de que la división + cast-to-int en C# es equivalente a Math.Floor
(es decir, baja la fracción), sino un “true” la implementación sería algo así como:
public static int Mod(int a, int n)
return a - (int)Math.Floor((double)a / n) * n;
De hecho, puedes ver las diferencias entre % y “true módulo” con lo siguiente:
var modTest =
from a in Enumerable.Range(-3, 6)
from b in Enumerable.Range(-3, 6)
where b != 0
let op = (a % b)
let mod = Mod(a,b)
let areSame = op == mod
select new
A = a,
B = b,
Operator = op,
Mod = mod,
Same = areSame
;
Console.WriteLine("A B A%B Mod(A,B) Equal?");
Console.WriteLine("-----------------------------------");
foreach (var result in modTest)
3,-10
Resultados:
A B A%B Mod(A,B) Equal?
-----------------------------------
-3 | -3 | 0 | 0 | True
-3 | -2 | -1 | -1 | True
-3 | -1 | 0 | 0 | True
-3 | 1 | 0 | 0 | True
-3 | 2 | -1 | 1 | False
-2 | -3 | -2 | -2 | True
-2 | -2 | 0 | 0 | True
-2 | -1 | 0 | 0 | True
-2 | 1 | 0 | 0 | True
-2 | 2 | 0 | 0 | True
-1 | -3 | -1 | -1 | True
-1 | -2 | -1 | -1 | True
-1 | -1 | 0 | 0 | True
-1 | 1 | 0 | 0 | True
-1 | 2 | -1 | 1 | False
0 | -3 | 0 | 0 | True
0 | -2 | 0 | 0 | True
0 | -1 | 0 | 0 | True
0 | 1 | 0 | 0 | True
0 | 2 | 0 | 0 | True
1 | -3 | 1 | -2 | False
1 | -2 | 1 | -1 | False
1 | -1 | 0 | 0 | True
1 | 1 | 0 | 0 | True
1 | 2 | 1 | 1 | True
2 | -3 | 2 | -1 | False
2 | -2 | 0 | 0 | True
2 | -1 | 0 | 0 | True
2 | 1 | 0 | 0 | True
2 | 2 | 0 | 0 | True
Te mostramos las reseñas y valoraciones de los lectores
Si te gustó nuestro trabajo, tienes el poder dejar un tutorial acerca de qué le añadirías a este tutorial.