2010-08-06 28 views
14

puedo escribir el programaC# operador módulo

int a = 3; 
int b = 4; 

Console.WriteLine(a % b); 

La respuesta que recibo es 3. ¿Cómo 3 mod 4 = 3 ???

No puedo entender cómo se calcula esto de esta manera.

+13

El resultado es correcto. ¿Qué esperabas que volviera? –

+0

Estabas pensando en b% a no a% b. –

+1

No estaba seguro de qué esperar, pero no pude averiguar cómo era el resto 3. –

Respuesta

42

Debido a que el resto de 3/4 = 3.

http://en.wikipedia.org/wiki/Modulo_operator

Si no puede entender por qué el resto es 3, tenemos algunos more serious problems aquí.

+0

Eso es muy divertido.Sin embargo, puede extender el problema matemático agregando un punto decimal a la parte superior y más ceros al dividendo para que eventualmente sea uniforme, lo que equivaldría a .75 como cociente y sin resto. No sabía que el operador de mod no haría eso, de ahí por qué hice la pregunta. –

+1

.75 no es un cociente. Por definición, el cociente es un número entero. – quantumSoup

+0

Piensa solo en enteros, no en decimales –

15

3 mod 4 es el resto cuando se divide por 3 4.

En este caso, 4 entra en cero 3 veces con un resto de 3.

44

No estaba muy seguro de lo esperar, pero no pude averiguar cómo el resto era 3.

Así que tienes 3 galletas, y desea división por igual entre 4 personas.

Debido a que hay más gente que las cookies, nadie consigue una galleta (cociente = 0) y usted tiene un resto de 3 galletas por sí mismo. :)

+29

En ese momento las otras tres personas lo saltan y toman sus cookies. –

+4

Esta respuesta parece responder a la pregunta del OP de una manera más amigable para los niños. Ahora incluso entiendo por qué fueron 3, gracias. lol –

1

ya creo que el usuario puede haber entendido las respuestas ... porque hay tantos buenos programadores .. en la redacción simple % le dice el recordatorio después de dividir con su propio número entero.

p. Ej.

int a = int.parse(console.readline()); 
int b = a % 2; 

ahora de entrada 13, se le dará 1, becuase después de bucear 13 por 2 resto es 1 en matemáticas simples. Espero que tengas eso.

+0

Saludos por tu explicación –

2

Según lo explicado por otros, pero si no desea utilizar el operador "mod". Aquí está la ecuación para averiguar el resto de "a" dividido por "n"

a-(n* int(a/n))

0

Otro "como se ha explicado por otros", pero si eres curioso acerca de varias otras maneras de hacer el módulo (o use un método alternativo), puede read this article which benchmarks a few different ways.

Básicamente, la forma más rápida es la buena operador módulo pasada de moda, similar a:

if (x % threshold == some_value) 
{ 
    //do whatever you need to 
}