私のコードのいくつかが使用されていることに気づきました:
ToString("D2")
およびその他の用途:
.ToString("00")
どちらも、0から99までの数字を00から99までの文字列に変換するために使用されています。つまり、0から9までの数字の先頭にゼロが付いている文字列です。
これらの方法は両方とも同じことをしますか?
私のコードのいくつかが使用されていることに気づきました:
ToString("D2")
およびその他の用途:
.ToString("00")
どちらも、0から99までの数字を00から99までの文字列に変換するために使用されています。つまり、0から9までの数字の先頭にゼロが付いている文字列です。
これらの方法は両方とも同じことをしますか?
興味深い質問です。私がこれまでに見つけた唯一の違いは次のとおりです。
フォーマット「D2」は整数型の値のみを受け入れます。フォーマット「00」はフロート/ダブルでも機能しますが。
サポート対象:整数型のみ。
次の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.
「00」指定子を使用すると、値は小数点の前の最も近い桁に丸められます。ここで、ゼロからの丸めが常に使用されます。たとえば、34.5を「00」でフォーマットすると、値は35になります。
およびMSDN標準数値形式文字列:
精度指定子は、結果の文字列に必要な最小桁数を示します。必要に応じて、数値の左側にゼロが埋め込まれ、精度指定子によって指定された桁数が生成されます。
したがって、あなたの質問に答えるために、ドキュメントによると、これらは特に同じことをしていませんが、あなたの場合、それらが意図されている可能性があります。例えば:
double d = 3.678;
Console.WriteLine(d.ToString("00"));
Console.WriteLine(4.ToString("D2"));
両方とも印刷され04
ます。D2
ダブルスには有効ではないため、これら2つの形式が使用されていると思います。