I einen Gleitkommawert haben: 12345,6489Falsche Rundung des Schwimmers, wenn ToString Verwendung ("F1")
Wenn I formatiert diese Verwendung:
(12345.6489f) .ToString ("F1")
Dann bekomme ich ein Ergebnis von
12345,7
Aber das ist falsch, da es 12.345,6 sein sollte.
Versteht jemand, warum dies auftreten könnte? Ein weiterer Hinweis ist, dass Casting zu verdoppeln, bevor ich formatiere das richtige Ergebnis zurückgibt, und wenn mein Float-Wert ein wenig kleiner ist, zum Beispiel 1234.6489, dann bekomme ich auch das richtige Ergebnis.
@DavidStratton: 'Double' ist auch nicht genau, und wird ähnliche Kuriositäten geben. Sie haben nur unterschiedliche Genauigkeiten und unterschiedliche Bereiche. –
@JonSkeet - danke für die Klarstellung! Ich habe den Kommentar gelöscht. – David
Single.ToString macht etwas sehr merkwürdiges. Ich denke, du musst auf die IL schauen. Die Dokumentation (http://msdn.microsoft.com/en-us/library/f71z6k0c.aspx) sagt "Standardmäßig enthält der Rückgabewert nur 7 Stellen der Genauigkeit, obwohl ein Maximum von 9 Ziffern intern beibehalten wird" aber ich ' Ich habe keine Ahnung, was das bedeutet. –