web-dev-qa-db-fra.com

Opérateur de module C #

Je peux écrire le programme

int a = 3;
int b = 4;

Console.WriteLine(a % b);

La réponse que je reçois est 3. Comment 3 mod 4 = 3 ??? 

Je ne peux pas comprendre comment cela est calculé de cette façon.

19
Ben Ziegler

Parce que le reste de 3/4 = 3.

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

Si vous ne pouvez pas comprendre pourquoi le reste est 3, nous avons quelques problèmes plus graves ici.

47
NullUserException

Je ne savais pas trop à quoi m'attendre, mais je ne pouvais pas comprendre comment le reste était 3.

Donc vous avez 3 cookies et vous voulez les diviser équitablement entre 4 personnes.

Parce qu'il y a plus de personnes que de cookies, personne ne reçoit un cookie ( quotient = 0) et vous avez un reste de 3 cookies pour vous-même. :)

51
quantumSoup

3 mod 4 est le reste quand 3 est divisé par 4.

Dans ce cas, 4 passe dans 3 fois zéro avec un reste de 3.

16
Gabe Moothart

Comme expliqué par d'autres, mais si vous ne voulez pas utiliser l'opérateur "mod". Voici l'équation pour comprendre le reste de "a" divisé par "n"

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

2
ajay

je pense déjà que l'utilisateur a peut-être compris les réponses .. car il y a tant de bons programmeurs .. en termes simples, % vous indique le rappel après la division avec votre propre entier. 

par exemple.

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

maintenant vous entrez 13, cela donnera 1, car après la plongée 13 par 2, le reste est 1 en mathématiques simples. J'espère que vous avez ça.

1
Rehan Manzoor

J'ai trouvé la réponse confuse et trompeuse .....

Le module est ce qui reste DANS LE PREMIER NOMBRE après avoir divisé la seconde en autant de fois que possible.

1 % 1 = 0 because after dividing 1 into 1, one time, there's nothing left
2 % 1 = 0 because after dividing 1 into 2, two times, there's nothing left
1 % 2 = 1 because 2 won't go into 1, so 1 is left
0
Stokely

Un autre "comme expliqué par d'autres", mais si vous êtes curieux de connaître plusieurs autres façons de moduler (ou d'utiliser une méthode alternative), vous pouvez lire cet article qui compare différentes méthodes .

Fondamentalement, le moyen le plus rapide est le bon et vieux opérateur de module, similaire à:

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