2016-06-12 70 views
2

我做的在C#中的一些自我教育,雖然我做了更復雜的項目比這個,我想不通的問題是什麼。分割兩個數字

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(); 
    } 

這是我的代碼,它應該算多少次的myTextFile陣列中F occour,應該除以數量與輸入數量。

我調試了很多次,和一切都很好,直到[是]線。儘管(人數=〜2201)和(輸入=〜4321),結果爲0。

我用帕斯卡,我一直在使用C#像2個月所以如果有人能幫助我,我將不勝感激工作。

F在匈牙利

+3

這是一個整數除法,使用result =(float)headcount/input;代替。 –

+0

問題是整數除法。嘗試轉換爲'result =(float)headcount/input;' –

+0

'int/int' ='int' - 您需要將devisee('headcount')投射到'float' – Olipro

回答

3

int/int總是忽略小數部分無論哪種類型爲它分配執行integer division代表「複方阿膠漿」 =「頭」。

/ Operator (C# Reference)

當你把兩個整數,結果始終是整數。對於 例如,7/3的結果爲2.要獲得的商作爲理性 數或分數,得到被除數或除數float類型或鍵入 兩倍。

你可能想使用浮點除法來代替。

result = (float)headcount/input; 

result = headcount/(float)input; 

檢查7.7.2 Division operator文檔以及。

0

既然你期待一個INT結果和兩個操作數是INT類型,你正在0作爲輸出。您可能需要將其轉換成float操作

headcount/(input * 1.0); 
+0

似乎OP想要得到總人數和總人數之間的比例(即期望得到0到1之間的數字)。 Alaso,請注意,由於OP使用整數除法,因此將除法得到的所有十進制值 –

+0

@GianPaolo,是的。編輯答案。 – Rahul

0

你沒有做除法之前投人數或輸入到浮動。它目前正在做整數除法,它不包括任何餘數。總人數/輸入與2201/4321相同,在整數除法中等於0。通過執行result =(float)headcount /(float)輸入將它們投射到浮點。