2014-03-29 153 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次回复也非常有帮助,如果我有额外的时间,我会让迭代向后退。目前我以这种方式解决了这个问题,并且工作。