Fixed decimal places is easy
String.Format(\"{0:F1}\", 654.321);
gives
654.3
How do I feed the number of
Probably the most efficient approach for formatting a single value:
int decimalPlaces= 2;
double value = Math.PI;
string formatString = String.Format("F{0:D}", decimalPlaces);
value.ToString(formatString);
Use NumberFormatInfo
:
Console.WriteLine(string.Format(new NumberFormatInfo() { NumberDecimalDigits = 2 }, "{0:F}", new decimal(1234.567)));
Console.WriteLine(string.Format(new NumberFormatInfo() { NumberDecimalDigits = 7 }, "{0:F}", new decimal(1234.5)));