Heim >Backend-Entwicklung >C++ >Wie kann ich den genauen Dezimalwert eines Doubles in C# genau ausgeben?
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!