Adding comma after each two digits in String.Format

c#, formatting, string, string-formatting

Solution

Number groups are defined by `NumberGroupSizes` property of `NumberFormatInfo`. So modify it accordingly and just use `N` format specifier.

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

This outputs

17,39,10,234.23

Thanks @Rawling and @Hamlet, for shedding light on this. Now OP gets expected output and me too learned something..

Problem

I was trying to format a number `173910234.23` to something like `17,39,10,234.23`. Here only the first thousand separator is after three digits. But after that all separators (`,`) are after two digits. I have tried the following - ``` double d = 173910234.23; Console.WriteLine(string.Format("{0:#,##,##,###.00}", d)); ``` but it gives output with comma after every three digits, `173,910,234.23` How can I achieve the format `17,39,10,234.23` using `string.Format`?

Original source