Tut ToString("F") verlieren Präzision relativ zu ToString("G")?

Ich bin Programmierung in C# mit .Net 3.5, die versuchen zu kontrollieren, das format, in dem floats ausgegeben werden als strings.

Aber ich sehe einige unerwartete Verhalten. Wenn mein code enthält (Beispiel):

float-Wert = 50.8836975;

Bearbeiten Sorry, dass (gelöscht) code "Probe" war wenig hilfreich. Im Grunde war meine Frage, versuchen, Sie zu erklären, die Ergebnisse meiner debugging-Anweisungen unten, wenn ich einen Haltepunkt nach dem "Wert" - ein C# float - zugewiesen waren das Ergebnis einer Berechnung. Jon Skeet's Antwort ist genau das was ich gebraucht habe (seine erste line bringt mich zur Aufgabe für die nutzlosen code).

Dann sehe ich folgende Ergebnisse, wenn ich versuche, die verschiedenen Optionen in meinem Unmittelbaren Fenster:

?value
50.8836975
?value.ToString("G9")
"50.8836975"
?value.ToString("F9")
"50.883700000"

Kann mir jemand erklären, warum meine F9-formatierte Wert verloren zu haben scheint 3 Ziffern der Präzision?

  • 50.8836975.ToString("F9") -> 50.883697500 für mich (beachten Sie, dass der Wert einer double, nicht ein float).
  • Der code wird nicht kompilieren, mit zu beginnen - die Sie gegeben haben ein double wörtlich und versucht, weisen Sie es einem float variable. Welche ist es?
  • OK, dann werde ich rein komme. Mein code gar nicht enthalten, die Zeile Wert=50.8836975. Allerdings war der angezeigte Wert in meinem debugger für das schwimmen (ja, wirklich!) variabel, wenn ich traf mein Haltepunkt. Also ich werde zu verschieben, dass man zu Visual Studio.
InformationsquelleAutor Nick | 2012-03-05
Schreibe einen Kommentar