2014-03-29 156 views
0

當我嘗試比較2個浮點值時,有一點問題。
在我的項目,每個遊戲對象具有.Score
每個.Score屬性具有0.5
步驟0和10之間的浮點值在minimumscoreId存儲的0..11一個浮點值(0是如果函數未使用)
我遍歷每個遊戲,看看得分是否高於選定的分數。但是當我選擇9作爲minimumScore時,它是9.5 < 9.5C# - 比較浮點值

更奇怪的是,如果我選擇8,它會讓我回到遊戲值9,另一個9.5和另一個7.5 ...

我真的不知道到哪裏尋找這個問題,我想停止和檢查值,但它只是最高審計機關if(9.5 < 9.0),它仍然進入,如果...

if (minimumScoreId > 0) 
    { 
     for (int i = 0; i < minimumScoreId; i++) 
     { 
      float score = (((Game)(games[i])).Score); 
      if (score < (minimumScoreId + 1.0)) 
      { 
       //delete from a list (this works in other functions without the float thing) 
      } 
     } 
    } 
+0

您確定要將分數與minimumScore * Id *進行比較嗎? –

+0

在你的文本中使用'>'但是在代碼中它是'<'。你能混淆兩者嗎? –

+2

順便說一下,你的第一個'if'在這裏是多餘的 - 如果'minumumScoreId'爲零(或更少),'for'循環不會運行。 –

回答

0
if (minimumScoreId > 0) 
       { 
        filter = true; 
        int j = 1; 
        for (int i = 1; i < minimumScoreId; i++) 
        { 
         float score = (((Game)(games[i-1])).Score); 
         if (score < ((float)minimumScoreId + 0.0)) 
         { 
          gamesUpdate.RemoveAt(j-1); 
          j--; 
         } 
         j++; 
        } 

感謝大家的幫忙!最後2次回覆也非常有幫助,如果我有額外的時間,我會讓迭代向後退。目前我以這種方式解決了這個問題,並且工作。