Dividere due numeri

Sto facendo un po ‘di autoeducazione in C #, e anche se ho fatto progetti più complessi di questo, non riesco a capire quale sia il problema.

private void button4_Click(object sender, EventArgs e) { int headcount = 0; int input = Global.inputcount; for (int i = 0; i < Global.inputcount; i++) { if (Global.myTextFile[i] == "F") { headcount++; } } float result; result = headcount/input; <<< that line button4.Text = result.ToString(); } 

Questo è il mio codice, si suppone che contenga quante volte ci sia F nell’array myTextFile , e dovrebbe dividere quel numero con il numero di input.

Ho effettuato il debug molte volte e tutto è a posto fino a [quella] linea. Il risultato è 0 nonostante il fatto che (numero = 2201) e (input = ~ 4321).

Lavoravo con Pascal, ho usato C # per circa 2 mesi, quindi se qualcuno mi può aiutare sarei grato.

F sta per “Fej” = “Testa” in ungherese

int / int esegue la divisione di interi che trascura sempre la parte frazionaria indipendentemente dal tipo che la assegni.

Da / Operatore (riferimento C #)

Quando si dividono due numeri interi, il risultato è sempre un numero intero. Ad esempio, il risultato di 7/3 è 2. Per ottenere un quoziente come numero o frazione razionale, dare il tipo di dividendo o divisore float o tipo double.

Potresti voler usare invece la divisione in virgola mobile.

 result = (float)headcount / input; 

o

 result = headcount / (float)input; 

Controllare anche la documentazione dell’operatore della divisione 7.7.2 .

Prima di fare la divisione non hai lanciato il conto o l’input a un float. Attualmente sta eseguendo la divisione integer, che non include alcun resto. il conto / ingresso è lo stesso di 2201/4321 che sarà uguale a 0 nella divisione intera. Trasmettili su float eseguendo il comando result = (float) / (float).

Dato che ti aspetti un risultato INT e entrambi gli operandi sono di tipo INT , stai ricevendo 0 come output. Potresti volerlo convertire in operazione float

 headcount/(input * 1.0);