评估和比较Dictionary的键变量和变量

Sae*_*ani 2 c# ienumerable dictionary

我有一本字典,其中包含直径(mm)和欧元硬币的价值:

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}
                };
Run Code Online (Sandbox Code Playgroud)

例如,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;
}
Run Code Online (Sandbox Code Playgroud)

jos*_*aly 6

我想你应该更换||&&:)