Aus der Dokumentation folgt daraus, dass die kompakteste Form die Nummer vertreten gewählt werden.
Das heißt, wenn Sie keine Formatzeichenfolge angeben, die default is the "G" format string. Aus folgt:
Ergebnis: Die kompakteste von entweder Festkomma oder wissenschaftliche Notation.
Die default for the number of digits ist 15 mit dem Spezifizierer. Das heißt, dass eine Zahl, die als genau einer bestimmten Binärdarstellung (wie zB 0.1 im Beispiel von Harriyott) darstellbar ist, als Fixpunkt angezeigt wird, sofern die Exponentialschreibweise nicht kompakter ist.
Wenn mehr Ziffern vorhanden sind, werden standardmäßig alle diese Ziffern angezeigt (bis zu 15) und die Exponentialschreibweise einmal kürzer gewählt.
Putting dies zusammen:
?(1.0/7.0).ToString()
"0,142857142857143" // 15 digits
?(10000000000.0/7.0).ToString()
"1428571428,57143" // 15 significant digits, E-notation not shorter
?(100000000000000000.0/7.0).ToString()
"1,42857142857143E+16" // 15 sign. digits, above range for non-E-notation (15)
?(0.001/7.0).ToString()
"0,000142857142857143" // non E-notation is shorter
?(0.0001/7.0).ToString()
"1,42857142857143E-05" // E-notation shorter
Und von Interesse:
?(1.0/2.0).ToString()
"0,5" // exact representation
?(1.0/5.0).ToString()
"0,2" // rounded, zeroes removed
?(1.0/2.0).ToString("G20")
"0,5" // exact representation
?(1.0/5.0).ToString("G20")
"0,20000000000000001" // unrounded
Dies zu zeigen, ist das, was hinter den Kulissen passiert, und warum ist 0.2
als 0.2
geschrieben, nicht 0,20000000000000001
, was eigentlich ist ist. Standardmäßig werden 15 signifikante Ziffern angezeigt. Wenn es mehr Ziffern gibt (und es gibt immer, außer für bestimmte Sondernummern), sind diese auf die normale Art und Weise gerundet. Nach dem Runden werden redundante Nullen entfernt.
Beachten Sie, dass ein Double eine Genauigkeit von 15 oder 16 Ziffern hat, abhängig von der Nummer. Wenn Sie also 15 Ziffern anzeigen, sehen Sie eine korrekt abgerundete Zahl und immer eine vollständige Darstellung und die kürzeste Darstellung der doppelten.
Sie beantworten nicht enthalten, was die Genauigkeitsbezeichner ist, welcher Teil ist, warum es die Art und Weise dargestellt ist. Der Standardwert ist "15". Außerdem ist es nicht immer die kompakteste Notation. '0,0001' ist größer als' 1E-04', aber der erste wird ausgegeben. Die MS-Dokumente sind hier nicht vollständig. – Abel
@Abel: Wird beide Bits enthalten, danke. –
Ich bin nicht einverstanden mit dem Begriff „kompakteste“ und Msdn Dokumentation als irreführend in dieser Hinsicht überlegen. Wenn Sie doppelt nehmen x = 13950, dann erzeugt G4-Format „1.395E + 04“, die Meilen entfernt, „kompakteste“ ist. Meiner Meinung nach funktionierte das "G" -Format besser in C, Fortran usw., wo es wirklich "kompakteste" Saite produzierte. C# zwingt mich, nach Workarounds zu suchen ... –