15

数字を2倍の数千でグループ化したいのですが、出力もしますが、実際には小数点以下の桁数が数値に含まれています。フォーマット文字列がわかりません。

 1000 => 1,000
 100000 => 100,000
 123.456 => 123.456
 100000.21 => 100,000.21
 100200.123456 => 100,200.123456

免責事項(あなたが思うほど簡単ではありません):

  • この質問に私を向けないでくださいそれは私の質問に答えません
  • MSDNを指さないでください。記事は役に立ちませんでした(私がそれらを間違って読んでいると思われる場合は、自分で読んで正しい答えを投稿してください)
  • .ToString("n")動作しません、それは数字を丸めます
4

6 に答える 6

10

これはあなたが望むことを正確に行うように見えます:

public void Code(params string[] args)
{
    Print(1000);
    Print(100000);
    Print(123.456);
    Print(100000.21 );
    Print(100200.123456);
}

void Print(double n)
{
    Console.WriteLine("{0:###,###.#######}", n);
}

1,000
100,000
123.456
100,000.21
100,200.123456
于 2008-11-17T15:38:52.860 に答える
2

古いスレッドですが、私にとって完全に満足できる答えはありません。それらのほとんどは、賛成票が最も多いものを含め、ゼロを空の文字列に変換します。

"#,##0.#################"より良い解決策は、少なくともゼロを表示する だと思います。それでも醜いですけどね。もっと良い方法があるはずです。

double[] vals = new double[] { 0.0, 0.1234, -0.1234, 1.0, 
                               123456789.123456, 123456789.0, 
                               0.123456789123456 };
foreach (double val in vals) 
{ 
    Console.WriteLine(val + ": " + val.ToString("#,##0.#################")); 
}
于 2011-05-24T17:07:47.210 に答える
1

単に「#、#」を使用してみてください。これにより、数千などのカンマが追加されますが、小数が保持されるかどうかはわかりません。それ以外の場合は、「#、###。###########」 ######### "、または小数点以下の任意の数の「#」記号。

于 2008-11-17T15:42:04.537 に答える
0

カスタムフォーマット文字列を作成できます。ToString( "###、###。######") カスタム数値フォーマット文字列

于 2008-11-17T15:42:14.430 に答える
0

これを試してください:

VB:

Dim vals() As Double = {1000, 100000, 123.456, 100000.21, 100200.123456}
For Each val As Double in vals
   Console.WriteLine(val.ToString("###,###.#########"))
Next val

C#:

double[] vals = new double[] {1000, 100000, 123.456, 100000.21, 100200.123456};
foreach (double val in vals)
{
    Console.WriteLine(val.ToString("###,###.#########"));
}

問題は、任意の数の小数を処理する形式がないことです。ただし、保存できる精度は非常に限られているため、それを使用して、重要でない0を切り落とすことができると仮定して、必要に応じて#文字を追加してカバーすることができます。

そして、あなたが投稿したMSDNリンクは、これを行う方法を読むために行く正確な場所です。

于 2008-11-17T15:37:27.823 に答える
0

これは少し遅いかもしれませんが、それはあなたが望むことをします。

public static string FormatNumber(double num)
{
    string s = num.ToString();
    string result = "";

    if(s.IndexOf('.') != -1)
    {
        result = s.Substring(s.IndexOf('.'));
        s = s.Substring(0, s.IndexOf('.'));
    }

    while (s.Length > 3)
    {
        result = "," + s.Substring(s.Length - 3);
        s = s.Substring(0, s.Length - 3);
    }
    if (s.Length == 0)
        return result.Substring(1);
    return s + result;
}
于 2008-11-17T15:51:22.147 に答える