переменные десятичные разряды в форматерах строки .Net? - PullRequest
16 голосов
/ 18 августа 2011

Фиксированные десятичные разряды легко

String.Format("{0:F1}", 654.321);

дает

654.3

Как мне указать количество десятичных разрядов в качестве параметра, как вы можете в C?Так что

String.Format("{0:F?}", 654.321, 2);

дает

654.32

Я не могу найти то, что должно заменить?

Ответы [ 5 ]

18 голосов
/ 18 августа 2011

Строка для форматирования не обязательно должна быть константой.

int numberOfDecimalPlaces = 2;
string formatString = String.Concat("{0:F", numberOfDecimalPlaces, "}");
String.Format(formatString, 654.321);
5 голосов
/ 13 сентября 2017

Использование 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)));
0 голосов
/ 05 декабря 2016

Вероятно, наиболее эффективный подход для форматирования одного значения:

int decimalPlaces= 2;
double value = Math.PI;
string formatString = String.Format("F{0:D}", decimalPlaces);
value.ToString(formatString);
0 голосов
/ 25 сентября 2012

использование

string.Format("{0:F2}", 654.321);

Выход будет

654.32

0 голосов
/ 18 августа 2011

Использовать пользовательскую строку числового формата Ссылка

var value = 654.321;
var s = value.ToString("0.##");
...