Heim > Backend-Entwicklung > C++ > Wie kann ich Dezimalwerte in C# bei der Verwendung von Gleitkommazahlen genau vergleichen?

Wie kann ich Dezimalwerte in C# bei der Verwendung von Gleitkommazahlen genau vergleichen?

Barbara Streisand
Freigeben: 2025-01-22 20:57:13
Original
289 Leute haben es durchsucht

How Can I Accurately Compare Decimal Values in C# When Using Floating-Point Numbers?

Vergleich von Gleitkommazahlen mit doppelter Genauigkeit in C#: Präzisions- und Genauigkeitsprobleme

Bei der Verwendung von Gleitkommavariablen mit doppelter Genauigkeit in C# stoßen Entwickler bei Vergleichen mit Dezimalwerten häufig auf unerwartete Ergebnisse. Ein solches Problem ergibt sich aus einer grundlegenden Eigenschaft der Gleitkommadarstellung.

Gleitkommaproblem

Der Datentyp

in C# verwendet binäre Brüche anstelle von Dezimalbrüchen, um Gleitkommawerte zu speichern. Diese Darstellung hat ihre Grenzen und einige Dezimalwerte können nicht genau gespeichert werden. Beispielsweise kann die Zahl 0,1 nicht exakt als binärer Bruch dargestellt werden. Es wird als Näherungswert gespeichert, was zu leicht abweichenden Werten führt. double

Lösung: Dezimaltyp

Um diesen Mangel an Präzision zu beheben, sollten Sie den Datentyp

anstelle von decimal verwenden. double Speichern Sie Zahlen in Dezimalschreibweise, sodass Werte wie 0,1 exakt dargestellt werden können. Dadurch werden die Probleme beim Vergleich von decimal-Werten beseitigt. double

Ausführliche Erklärung

Gleitkommazahlen werden mit Exponent und Mantisse dargestellt, ähnlich der wissenschaftlichen Notation. Anstelle der Basis 10 wird jedoch die Basis 2 (Binärschreibweise) verwendet.

Dezimalwerte wie 0,1 haben sich nicht wiederholende Binärdarstellungen und sind daher in Systemen zur Basis 2 nur schwer genau zu speichern. Dadurch kann die in der Variable

gespeicherte binäre Näherung von 0,1 geringfügig vom tatsächlichen Wert abweichen. double

Dieser subtile Unterschied kann zu inkonsistenten Vergleichen in

-Anweisungen führen, bei denen der erwartete Wert von 0,1 möglicherweise nicht mit dem gespeicherten Wert übereinstimmt. Die Verwendung des Datentyps if vermeidet diese Probleme, indem eine genaue Speicherung und ein genauer Vergleich von Dezimalwerten gewährleistet wird. decimal

Das obige ist der detaillierte Inhalt vonWie kann ich Dezimalwerte in C# bei der Verwendung von Gleitkommazahlen genau vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage