2012-10-24 26 views
29

ich einige meiner Code nur bemerkt verwendet:Was ist der Unterschied zwischen ToString ("D2") .ToString ("00") ist

ToString("D2") 

und andere Verwendungen:

.ToString("00") 

Beide werden wird verwendet, um Zahlen von 0 bis 99 in Strings von 00 bis 99 zu konvertieren. Das sind Strings, bei denen die Zahlen 0-9 eine führende Null haben.

Erzielen beide Methoden dasselbe?

+0

Ich konnte einen "int" Wert von 1000 drucken, der die von Ihnen erwähnte "0 bis 99" überschreitet. 'int num = 1000; Console.WriteLine ("num.toString (\" D2 \ ") =" + num.ToString ("D2")); '// druckt" num.toString ("D2") = 1000 " –

Antwort

30

Es ist eine interessante Frage. Der einzige Unterschied, den ich bisher gefunden habe, ist:

Format "D2" akzeptiert nur ganzzahlige Werte. Wobei als Format "00" auch mit Floats/Doubles funktionieren würde.

Format D - MSDN

Unterstützt durch: nur Integral-Typen.

Betrachten wir die folgenden drei Zeilen:

double d = 23.05123d; 
int i = 3; 
Console.Write(i.ToString("D2")); 
Console.Write(d.ToString("00")); 
Console.Write(d.ToString("D2")); //this will result in exception: 
           //Format specifier was invalid. 
8

Von MSDN Custom Numeric Format Strings:

Die "00" Spezifizierer bewirkt, dass der Wert auf die nächste digit vor der Dezimalstelle gerundet werden, wobei Rundung entfernt von Null wird immer verwendet. Zum Beispiel würde die Formatierung mit 34,5 „00“ führen, in dem Wert 35.

Und MSDN Standard Numeric Format Strings:

Der Genauigkeitsbezeichner zeigt die minimale Anzahl von Ziffern in der resultierenden Saite gewünscht wird. Falls erforderlich, wird die Zahl links von Nullen aufgefüllt, um die Anzahl der Ziffern zu erzeugen, die vom Präzisionsspezifizierer angegeben werden.

So Ihre Frage zu beantworten, nach dem docs diese nicht speziell das gleiches tun, aber in ihrem Fall ist es möglich, dass sie zu sollen. Zum Beispiel:

double d = 3.678; 
Console.WriteLine(d.ToString("00")); 
Console.WriteLine(4.ToString("D2")); 

Beide werden 04 ausgedruckt. Ich könnte mir vorstellen, dass diese beiden Formate verwendet werden, weil D2 nicht für Doppel gültig ist.

Verwandte Themen