i've seen the question Odd decimal type behavior for ToString(IFormatProvider)
this is my test code
// Define an array of numbers to display.
double[] numbers = { -1.5345e16, -123.4321, 19092.123, 1.1734231911290e16 };
// Define the culture names used to display them.
string[] cultureNames = { "en-US", "fr-FR", "ja-JP", "ru-RU" };
foreach (double number in numbers)
{
Console.WriteLine("{0}:", Convert.ToString(number,
System.Globalization.CultureInfo.InvariantCulture));
foreach (string cultureName in cultureNames)
{
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(cultureName);
culture.NumberFormat.NumberGroupSizes = new int[] {2,2,3};
culture.NumberFormat.NumberDecimalDigits = 5;
Console.WriteLine(".ToString {0}: {1,20}",
culture.Name, number.ToString("N", culture));
Console.WriteLine("Convert.ToString {0}: {1,20}",
culture.Name, Convert.ToString(number, culture));
}
Console.WriteLine();
}
and the sample result is as below:
why is Convert.ToString not applying the format?

This is with Win7 Prof/VS2010+SP1Rel (10.0.40219.1)
As per the documentation for
Convert.ToString(double, IFormatProvider):... which is then documented as:
When you call
ToString, you're passing inN- if you pass inGinstead, you'll get the same results asConvert.ToString.The
Gformat specifier documentation states:... and lists
NegativeSign,NumberDecimalSeparator,PositiveSign. Your code doesn't set any of those properties, which is why it's not making a difference. If you write:for example, then that will affect the output of
Convert.ToString.