Ausgangslage
Wenn 1/3 nicht gleich 0,333333333 ist, hat man vermutlich mit dem Datentyp float oder double gearbeitet. In Geschäftsanwendungen können solche Abweichungen zu falsch ermittelten Preise, Gewichten und Abmessungen führen. In der Folge kommt es zu seltenem und schwer nachvollziehbarem Fehlverhalten.
Ein einfaches Beispiel zur Illustration:
In beiden Fällen werden die Werte als ungleich festgestellt. Viele Entwickler gehen davon aus, dass ihr Vergleich tut, was sie erwarten. Was allerdings nicht so ist und zu Verwunderung beim Debuggen führt.
Wie kann das Problem vermieden werden?
Wenn man die Wahl hat, sollte man mit dem Datentyp decimal arbeiten.
Hat man diese Option nicht, muss man bei Vergleichen eine Toleranz (Epsilon) berücksichtigen.
Da der Fall in unseren Projekten oft vorkommt, haben wir Erweiterungsmethoden dafür in unserer allgemeinen Bibliothek.
copyright ©2023 idee5 gmbh | impressum | datenschutz | haftungsausschluss | agb | seitenübersicht