Heim  >  Artikel  >  Backend-Entwicklung  >  Warum führt der Vergleich von Float- und Double-Variablen auf Gleichheit manchmal zu unerwarteten Ergebnissen?

Warum führt der Vergleich von Float- und Double-Variablen auf Gleichheit manchmal zu unerwarteten Ergebnissen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 15:39:02192Durchsuche

Why Does Comparing Float and Double Variables for Equality Sometimes Lead to Unexpected Results?

Warum die Gleichheit von Double- und Float-Variablen trügerisch sein kann

Gleitkomma-Datentypen wie Float und Double sind für die Darstellung reeller Zahlen unerlässlich Programmierung. Allerdings ist es wichtig, ihre Nuancen zu verstehen, um überraschende Ergebnisse zu vermeiden.

Präzision und Rundung: Schelmische Effekte

Float- und Double-Variablen haben eine begrenzte Genauigkeit, was bedeutet, dass sie nur a speichern können endliche Anzahl von Ziffern ohne Informationsverlust. Diese inhärente Einschränkung führt zu Rundungsfehlern, bei denen die interne Darstellung einer Zahl gekürzt wird, um in den verfügbaren Platz zu passen.

Ein veranschaulichendes Beispiel

Betrachten Sie die dargestellten Zahlen 1.1 sowohl als Float als auch als Double. Aufgrund der begrenzten Präzision werden sie intern als Näherungen dargestellt:

float f = 1.1; // Internally stored as an approximation
double d = 1.1; // Internally stored as an approximation

Der Vergleich von f und d auf Gleichheit ergibt „falsch“, da die Rundungsfehler zu unterschiedlichen internen Darstellungen führen, obwohl sie die „gleiche“ Zahl darstellen.

Das Problem vermeiden

Um irreführende Vergleiche zu vermeiden, vermeiden Sie am besten die Verwendung des Gleichheitsoperators (==) für Gleitkommazahlen. Führen Sie stattdessen einen Toleranzschwellenwert (Epsilon) ein und vergleichen Sie die Differenz zwischen den Zahlen, um festzustellen, ob sie innerhalb des akzeptablen Bereichs liegt:

if (abs(f - d) < epsilon) {
  // They are considered equal within the tolerance
}

Wenn Sie die Fallstricke von Float- und Double-Vergleichen verstehen, können Sie unerwartete Ergebnisse vermeiden Stellen Sie die Genauigkeit Ihres Codes sicher.

Das obige ist der detaillierte Inhalt vonWarum führt der Vergleich von Float- und Double-Variablen auf Gleichheit manchmal zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn