在String.Format中每两位数后添加逗号

th1*_*ey3 4 c# string formatting string-formatting

我试图将数字格式化173910234.23为类似的东西17,39,10,234.23.这里只有第一个千位分隔符在三位数之后.但之后所有分隔符(,)都在两位数之后.我试过以下 -

double d = 173910234.23;
Console.WriteLine(string.Format("{0:#,##,##,###.00}", d));
Run Code Online (Sandbox Code Playgroud)

但它每三位数后输出逗号, 173,910,234.23

如何17,39,10,234.23使用格式string.Format

Sri*_*vel 8

数字组由NumberGroupSizes属性定义NumberFormatInfo.因此,相应地修改它,只使用N格式说明符.

double d = 173910234.23;
var culture = new CultureInfo("en-us", true)
{
    NumberFormat =
    {
        NumberGroupSizes = new int[] { 3, 2 }
    }
};
Console.WriteLine(d.ToString("N", culture));
Run Code Online (Sandbox Code Playgroud)

这输出

17,39,10,234.23
Run Code Online (Sandbox Code Playgroud)


感谢@Rawling和@Hamlet,了解这一点.现在OP获得了预期的输出,我也学到了一些东西......

  • 嘿,我从来没有听说过[`NumberGroupSizes`](http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numbergroupsizes%28v=vs.110%29.aspx) ,但如果你使它成为'new int [] {3,2}}它应该*完全*OP想要的. (4认同)