C# - 比较浮点值

时间:2014-03-29 19:24:37

标签: c# comparison

在尝试比较2个浮点值时,我遇到了一些问题 在我的项目中,每个Game对象都有一个.Score
每个.Score属性的浮点值介于0到10之间,步长为0.5
在minimumscoreId中存储浮点值0..11(如果函数未使用则为0)
我遍历每一场比赛,看看比分是否高于所选分数。但是当我选择9作为最小分数时,它是9.5< 9.5

更奇怪的是,如果我选择8,它会给我一个得分为9的游戏值,另一个得分为9.5而另一个得分为7.5 ......

我真的不知道在哪里寻找这个问题,我尝试停止并检查值,但它只是sais if( 9.5 < 9.0 ),它仍然会进入if ...

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

1 个答案:

答案 0 :(得分: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个回复也非常有用,如果我有额外的时间,我会让迭代倒退。目前我用这种方式解决了它,它起作用了。