Ich habe ein Wörterbuch, das Durchmesser (in mm) und im Wert von Euro-Münzen Gastgeber:auswerten und ein Variable Schlüsselpaare eines Wörterbuch Vergleich
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}
};
So zum Beispiel einer 50 Euro-Cent-Münze hat einen Durchmesser von 24,25 mm. nach einer Bildverarbeitung erhalte ich den groben Durchmesser einer 50-Cent-Münze in einem Bild mit einem Durchmesser von 24,1 mm. Ich habe versucht, den folgenden Code zu schreiben, indem ich einen Fehler von +/- 0,2 mm berücksichtigte, aber es gibt immer den ersten Wert im Wörterbuch zurück (die 2,00-Euro-Münze). Was kann mit der Logik falsch sein?
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;
}
ersetzen Sie nicht einen Debugger verwendet haben, nicht wahr? –
Sie sollten '&&' anstelle von '||' –