Verstehen des Gleitkommavergleichs in C
Beim Vergleich von Gleitkommawerten in C ist es wichtig, sich möglicher Ungenauigkeiten bewusst zu sein begrenzte Präzision. Im bereitgestellten Codeausschnitt wird die unerwartete Ausgabe „1 ist richtig“ beobachtet, wenn die Gleitkommazahlen a und b mit den Konstanten 0,7 bzw. 0,5 verglichen werden.
Ursachen für die unerwartete Ausgabe:
Das Problem tritt aus folgenden Gründen auf:
Auflösung:
Um die erwartete Ausgabe zu erhalten, können Sie entweder:
Code mit erwarteter Ausgabe:
int main() { double a = 0.7; double b = 0.5; if (a < 0.7) { if (b < 0.5) printf("2 are right"); else printf("1 is right"); } else printf("0 are right"); }
In diesem korrigierten Code erfolgt der Vergleich von a und b zu Ihre jeweiligen Doppel stellen eine genaue Präzision sicher, was zur erwarteten Ausgabe von „0 ist richtig“ führt.
Das obige ist der detaillierte Inhalt vonWarum führt der Vergleich von Floats in C manchmal zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!