在尝试比较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)
}
}
}
答案 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个回复也非常有用,如果我有额外的时间,我会让迭代倒退。目前我用这种方式解决了它,它起作用了。