41

私のコードのいくつかが使用されていることに気づきました:

ToString("D2")

およびその他の用途:

.ToString("00")

どちらも、0から99までの数字を00から99までの文字列に変換するために使用されています。つまり、0から9までの数字の先頭にゼロが付いている文字列です。

これらの方法は両方とも同じことをしますか?

4

2 に答える 2

39

興味深い質問です。私がこれまでに見つけた唯一の違いは次のとおりです。

フォーマット「D2」は整数型の値のみを受け入れます。フォーマット「00」はフロート/ダブルでも機能しますが。

フォーマットD-MSDN

サポート対象:整数型のみ。

次の3行を検討してください。

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.
于 2012-10-24T05:42:52.610 に答える
12

MSDNカスタム数値形式文字列から:

「00」指定子を使用すると、値は小数点の前の最も近い桁に丸められます。ここで、ゼロからの丸めが常に使用されます。たとえば、34.5を「00」でフォーマットすると、値は35になります。

およびMSDN標準数値形式文字列

精度指定子は、結果の文字列に必要な最小桁数を示します。必要に応じて、数値の左側にゼロが埋め込まれ、精度指定子によって指定された桁数が生成されます。

したがって、あなたの質問に答えるために、ドキュメントによると、これらは特に同じことをしていませんが、あなたの場合、それらが意図されている可能性があります。例えば:

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

両方とも印刷され04ます。D2ダブルスには有効ではないため、これら2つの形式が使用されていると思います。

于 2012-10-24T05:42:53.993 に答える