2010-08-06 2 views
14

Je peux écrire le programmeC opérateur # module

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 n'arrive pas à comprendre comment cela est calculé de cette façon.

+13

Le résultat est correct. Qu'attendiez-vous qu'il revienne? –

+0

Vous pensiez à b% a pas à% b. –

+1

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

Répondre

42

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 more serious problems ici.

+0

C'est très drôle en effet.Cependant, vous pouvez étendre le problème mathématique en ajoutant une virgule décimale au sommet et plus de zéros au dividende pour l'amener à finir par être égal, ce qui équivaut à 0,75 comme quotient et pas de reste. Je ne savais pas que l'opérateur de mod ne ferait pas cela, d'où la raison pour laquelle j'ai posé la question. –

+1

.75 n'est pas un quotient. Par définition, le quotient est un nombre entier. – quantumSoup

+0

Pensez seulement des entiers, pas des nombres décimaux –

15

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

Dans ce cas, 4 va en 3 fois zéro avec un reste de 3.

44

Je n'étais pas sûr de ce que d'attendre, mais je ne pouvais pas comprendre comment le reste était 3.

vous avez 3 les cookies, et vous voulez diviser les également entre 4 personnes.

Parce qu'il ya plus de gens que les cookies, personne obtient un cookie (quotient = 0) et vous avez un reste de 3 biscuits pour vous-même. :)

+29

À ce stade, les trois autres personnes vous sautent et prennent vos cookies. –

+4

Cette réponse semble répondre à la question du PO d'une manière plus adaptée aux enfants. Maintenant même je comprends pourquoi c'était 3, merci. lol –

1

je pense déjà que l'utilisateur peut avoir compris les réponses .. car il ya tellement de bon programmeur .. en langage simple % dit le rappel après avoir divisé avec votre propre entier.

par exemple.

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

maintenant que vous entrez 13, il donnera 1, becuase après la plongée 13 par 2 reste est 1 en mathématiques simples. J'espère que vous avez compris.

+0

Bravo pour votre explication –

2

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))

0

Une autre « comme expliqué par d'autres », mais si vous êtes curieux de savoir plusieurs autres façons de faire le module (ou utilisez une méthode alternative), vous pouvez read this article which benchmarks a few different ways.

En fait, le plus rapide est le bon vieux opérateur de module façonné, semblable à:

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