2011-12-24 5 views
1

残念なことに、MSDNのドキュメントでこれについてはあまり明確ではありません。私は、次の数値フォーマッタの違いが何であるか疑問に思っています。カスタム数値書式とグループ書式の違いは?

  1. #,#

  2. #,0

  3. #,#0

  4. #,##0

  5. #,###0(私は現在、テストすることができないんだとわからない、これはでも有効です)

私の知る限り、彼らられるすべてのフォーマット番号など12,345など12345として。確かにいくつかの微妙な違いはありますか?

最後に、#,#または#,0の左に指定子を持つ有効な書式文字列がありますか?もしそうなら、彼らは何をしていますか?

+0

さらに詳しい情報...? – Noldorin

答えて

1

(3)との違いがあるようです。

ここで私はノックコードです:SteveXの記事がある

{0:#,0}:    0, 1, 10, 19, 100, 123, 1,234, 12,345, 
{0:#,#0}:    0, 1, 10, 19, 100, 123, 1,234, 12,345, 
{0:#,##}:    , 1, 10, 19, 100, 123, 1,234, 12,345, 
{0:#,###0}:    0, 1, 10, 19, 100, 123, 1,234, 12,345, 
------------------------------------------- 
{0:#,0}:    0, 0, 1, 10, 100, 123, 12,334, 1,235, 12,346, 
{0:#,#0}:    0, 0, 1, 10, 100, 123, 12,334, 1,235, 12,346, 
{0:#,##}:    , , 1, 10, 100, 123, 12,334, 1,235, 12,346, 
{0:#,###0}:    0, 0, 1, 10, 100, 123, 12,334, 1,235, 12,346, 

[誰かがテストケースを改善したい場合は、お気軽に。]

static void Main(string[] args) 
{ 
    string[] arrFormat = new string[] { "{0:#,0}", "{0:#,#0}", "{0:#,##}", "{0:#,###0}" }; 
    int[] ints = new int[] {0, 1, 10, 19, 100, 123, 1234, 12345}; 
    double[] doubles = new double[]{ 0, 0.1, 1.1, 10.12, 100.1, 123.45, 
            12334.4567, 1234.56, 12345.6}; 

    foreach (string specifier in arrFormat) 
    { 
     Console.Write(specifier + ":\t\t"); 

     foreach (int i in ints) 
     { 
      Console.Write(string.Format(specifier, i) + ", "); 
     } 
     Console.WriteLine(""); 
    } 

    Console.WriteLine("-------------------------------------------"); 

    foreach (string specifier in arrFormat) 
    { 
     Console.Write(specifier + ":\t\t"); 

     foreach (double d in doubles) 
     { 
      Console.Write(string.Format(specifier, d) + ", "); 
     } 
     Console.WriteLine(""); 
    } 
} 

がここに出力です書式文字列のための非常に良いリファレンス:String Formatting in C#

+0

謝罪;私はかなり遅くこの記事を書きました.3は実際にはタイプミスでした。私はそのケースを修正し、余分なものを追加しました。もう一度試してみてください。コードを投稿したので、しばらく時間を取ってみることができます。リソースにも感謝します。 – Noldorin