【发布时间】:2012-03-27 23:51:50
【问题描述】:
我有一本包含直径(以毫米为单位)和欧元硬币价值的字典:
CoinsDiameters = new Dictionary<float, decimal>
{
{25.75F, 2.00m},
{24.25F, 0.50m},
{23.25F, 1.00m},
{22.25F, 0.20m},
{21.25F, 0.05m},
{19.75F, 0.10m},
{18.75F, 0.02m},
{16.25F, 0.01m}
};
例如,50 欧分硬币的直径为 24.25 毫米。经过一些图像处理后,我在直径为 24.1 毫米的图像中获得了 50 美分硬币的粗略直径。我试图通过记住 +/- 0.2 毫米的错误来编写下面的代码,但它总是返回字典中的第一个值(2.00 欧元硬币)。逻辑有什么问题?
public decimal GetValueForDiameter(float diameter)
{
foreach(var key in CoinsDiameters.Keys)
{
if (diameter < key + 0.2F || diameter > key - 0.2F)
{
return CoinsDiameters[key];
}
}
return 0;
}
【问题讨论】:
-
你没有使用调试器,是吗?
-
你应该使用
&&而不是||
标签: c# dictionary ienumerable