Früher dachte ich, ich verstehe den Unterschied zwischen decimal
und double
Werten, aber jetzt kann ich das Verhalten dieses Code-Schnipsels nicht mehr rechtfertigen.
Ich muss die Differenz zwischen zwei Dezimalzahlen in bestimmten Intervallen dividieren, zum Beispiel:
decimal minimum = 0.158;
decimal maximum = 64.0;
decimal delta = (maximum - minimum) / 6; // 10.640333333333333333333333333
Dann erstelle ich die Intervalle in umgekehrter Reihenfolge, aber das erste Ergebnis ist bereits unerwartet:
for (int i = 5; i >= 0; i--)
{
Interval interval = new Interval(minimum + (delta * i), minimum + (delta * (i + 1));
}
{53.359666666666666666666666665, 63.999999999999999999999999998}
Ich würde erwarten, dass der maximale Wert genau 64 ist. Was übersehe ich hier?
Vielen Dank!
EDIT: Wenn ich double
anstelle von decimal
verwende, scheint es ordnungsgemäß zu funktionieren!