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 AntwortenLassen:
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
.