Beim Formatieren von Doubles für die Ausgabe in C# ist es wichtig zu beachten, dass die Ausgabe von dem im Debugger angezeigten Wert abweicht. Hier ist der Grund:
Im Gegensatz zu C, wo die Ausgabegenauigkeit durch den Formatbezeichner bestimmt wird, rundet C# alle Doppelungen auf 15 signifikante Dezimalstellen, bevor eine Formatierung angewendet wird. Diese Diskrepanz entsteht, weil C# der Genauigkeit Vorrang vor der angeforderten Präzision einräumt.
Der Visual Studio-Debugger zeigt direkt die interne Binärdarstellung von Doubles an, daher die Diskrepanz mit der formatierten Ausgabe.
Während C# ein fehlt Mit der integrierten Lösung für die exakte Dezimalformatierung können Sie manuell eine Zeichenfolgendarstellung aus den internen Binärdaten erstellen. Alternativ können Sie Bibliotheken von Drittanbietern wie DoubleConverter von Jon Skeet verwenden, die eine ToExactString-Methode für eine präzise Dezimalausgabe bereitstellen.
Verwendung von DoubleConverter zum Formatieren eines Doubles auf 20 Dezimalstellen:
double i = 10 * 0.69; Console.WriteLine(DoubleConverter.ToExactString(i));
Das obige ist der detaillierte Inhalt vonWarum unterscheiden sich C#-Doppelformatierung und Debuggerwerte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!