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&nbsp;oderfalse?

Empirisch lautet die Antworttrue. Ich habe es jedoch erwartetfalse.

Wie0.1&nbsp;kann nicht perfekt in binär dargestellt werden, während double hat15&nbsp;zu16&nbsp;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.