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.
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
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
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
-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!