0.1 float ist größer als 0.1 double. Ich habe erwartet, dass es falsch ist

Diese Frage hat hier bereits eine Antwort:

Wenn der Operator <für Gleitkommatypen ordnungsgemäß funktioniert, warum können wir ihn dann nicht für Gleichheitstests verwenden? 5 Antworten

Lassen:

double d = 0.1;
float f = 0.1;

sollte der Ausdruck

(f > d)

Rückkehrtrue oderfalse?

Empirisch lautet die Antworttrue. Ich habe es jedoch erwartetfalse.

Wie0.1 kann nicht perfekt in binär dargestellt werden, während double hat15 zu16 Dezimalstellen der Genauigkeit und Float hat nur7. Sie sind also beide kleiner als0.1, während das Doppel näher ist0.1.

Ich brauche eine genaue Erklärung für dietrue.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage