Dot-Net

用逗號格式化數字,但保留小數

  • February 11, 2012

我想將數字組合成千位,但也輸出小數位數實際上是數字。我無法弄清楚格式字元串。

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

免責聲明(它並不像您想像的那麼簡單):

  • 請不要向我指出這個問題,它不能回答我的問題
  • 請不要將我指向MS DN,這些文章對我沒有幫助。(如果您認為我讀錯了,請自己閱讀並發布正確答案)
  • .ToString("n")不起作用,它會將數字四捨五入

這似乎完全符合您的要求:

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

一個舊執行緒,但沒有一個答案讓我完全滿意。他們中的大多數將零變成空字元串,包括投票最多的字元串。

我認為更好的解決方案是"#,##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.#################")); 
}

引用自:https://stackoverflow.com/questions/295877