Heim >Backend-Entwicklung >C++ >Wie kann ich den genauen Dezimalwert eines Doubles in C# genau ausgeben?

Wie kann ich den genauen Dezimalwert eines Doubles in C# genau ausgeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-05 16:57:41170Durchsuche

How Can I Accurately Output the Exact Decimal Value of a Double in C#?

Formatieren von Doppelzeichen in C#

Bei der Ausgabe von Doppelzeichen rundet C# diese automatisch auf 15 signifikante Ziffern, bevor eine Formatierung angewendet wird. Dies kann zu Abweichungen zwischen der formatierten Ausgabe und dem tatsächlichen Wert des Doubles führen.

Problem mit String.Format:

Die String.Format-Methode in C# betrifft nur die Anzeige der formatierten Zahl. Die Genauigkeit des zugrunde liegenden Double-Werts wird dadurch nicht angepasst. Infolgedessen zeigt String.Format("{0:F20}", i) 20 Dezimalstellen an, der tatsächliche Wert des Doubles wurde jedoch möglicherweise intern noch auf 15 Dezimalstellen gerundet.

Beispiel:

Betrachten Sie den folgenden Code:

double i = 10 * 0.69;
Console.WriteLine(String.Format("  {0:F20}", i));

Die Ausgabe erfolgt 6,90000000000000000000 , auch wenn der tatsächliche Wert von i näher bei 6,89999999999999946709 liegt.

Lösung:

Um den genauen Dezimalwert eines Doubles auszugeben, können Sie Jon Skeets verwenden DoubleConverter-Klasse. Diese Klasse verfügt über eine ToExactString-Methode, die die exakte Dezimaldarstellung eines Double zurückgibt. Sie können die Zeichenfolge dann nach Bedarf formatieren.

Zum Beispiel:

double i = 10 * 0.69;
Console.WriteLine(DoubleConverter.ToExactString(i));

Dies gibt 6,89999999999999946709294817992486059665679931640625 aus, was die genaue Dezimaldarstellung von i ist.

Das obige ist der detaillierte Inhalt vonWie kann ich den genauen Dezimalwert eines Doubles in C# genau ausgeben?. 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