Iは、ユーロ硬貨の直径(単位: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}
};
そこで、例えば50ユーロセント硬貨は24.25の直径を有しますmm。何らかの画像処理をした後、直径24.1mmの画像に50セントの硬貨の大まかな直径が表示されます。私は+/- 0.2mmの誤差を念頭に置いて以下のコードを書こうとしましたが、それは常に辞書の最初の値(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;
}
デバッガを使用していないと置き換える必要がありましたと思いますか? –
あなたは '||'の代わりに '&&'を使うべきです –