G
gp9WTd
Gast
Hallo!
Der Titel sagt bereits alles, aber ich möchte hier nun doch nochmal genauer erläutern.
Ist es nicht so, dass es höchst fahrlässig ist, 2 Gleitkommazahlen mit dem == Operator auf Gleichheit zu überprüfen, selbst wenn diese Zahlen eigentlich indentisch sein müssten? Wegen der Ungenauigkeit vermute ich mal. Okay, man kann das ganze dann mit einem Epsilon lösen, das ist mir bereits bekannt.
Aber gibt es auch Fälle, wo ein == doch zulässig ist?
Ich denke das hängt davon ab, wo die Zahlen herstammen.
Was wäre mit:
float a = 0;
float b = 0;
if( a == b)...
Kann das hier auch schon Probleme machen, oder ist das sicher?
In meinem speziellen Fall kommt die Zahl aus einem Swing-Fenster und wird nach double geparst, anschließend im Code dann mit einer Hardcoded 0 verglichen. In ein paar Testläufen gabs keine Probleme - kann ich davon ausgehen dass das passt, oder sollte doch lieber Epsilon zum Zuge kommen? Wenn der User 0 eingibt, soll die Bedingung eben true werden.
Kurz gesagt wollte ich wissen, wann gibts Probleme, wann nicht.
Danke!
Der Titel sagt bereits alles, aber ich möchte hier nun doch nochmal genauer erläutern.
Ist es nicht so, dass es höchst fahrlässig ist, 2 Gleitkommazahlen mit dem == Operator auf Gleichheit zu überprüfen, selbst wenn diese Zahlen eigentlich indentisch sein müssten? Wegen der Ungenauigkeit vermute ich mal. Okay, man kann das ganze dann mit einem Epsilon lösen, das ist mir bereits bekannt.
Aber gibt es auch Fälle, wo ein == doch zulässig ist?
Ich denke das hängt davon ab, wo die Zahlen herstammen.
Was wäre mit:
float a = 0;
float b = 0;
if( a == b)...
Kann das hier auch schon Probleme machen, oder ist das sicher?
In meinem speziellen Fall kommt die Zahl aus einem Swing-Fenster und wird nach double geparst, anschließend im Code dann mit einer Hardcoded 0 verglichen. In ein paar Testläufen gabs keine Probleme - kann ich davon ausgehen dass das passt, oder sollte doch lieber Epsilon zum Zuge kommen? Wenn der User 0 eingibt, soll die Bedingung eben true werden.
Kurz gesagt wollte ich wissen, wann gibts Probleme, wann nicht.
Danke!