0.1 float jest większe niż 0.1 podwójne. Spodziewałem się, że będzie fałszywy [duplikat]

To pytanie ma już tutaj odpowiedź:

Jeśli operator <działa poprawnie dla typów zmiennoprzecinkowych, dlaczego nie możemy go użyć do testowania równości? 5 odpowiedzi

Pozwolić:

double d = 0.1;
float f = 0.1;

czy wyrażenie

(f > d)

powróttrue lubfalse?

Empirycznie odpowiedź brzmitrue. Jednak spodziewałem się, że tak będziefalse.

Tak jak0.1 nie może być idealnie reprezentowany w postaci binarnej, podczas gdy podwójne ma15 do16 dziesiętne cyfry precyzji, a float ma tylko7. Więc oba są mniejsze niż0.1, podczas gdy podwójne jest bliżej0.1.

Potrzebuję dokładnego wyjaśnienia dlatrue.

questionAnswers(7)

yourAnswerToTheQuestion