Ответ 1
Вы можете сделать это, и я нахожу немного более чистым, чтобы читать намерения:
String.Format("{0:#,###0}", 0);
Пример:
string.Format("{0:#,###0}", 123456789); // 123,456,789
string.Format("{0:#,###0}", 0); // 0
Использование String.Format, как я могу обеспечить, чтобы все числа имели запятую после каждых трех цифр например, 23000 = "23 000" и что 0 возвращает "0".
String.Format( "{0: n}", 0);//дает 0.00, который я не хочу. Я не хочу никаких десятичных знаков, все числа будут целыми числами.
Вы можете сделать это, и я нахожу немного более чистым, чтобы читать намерения:
String.Format("{0:#,###0}", 0);
Пример:
string.Format("{0:#,###0}", 123456789); // 123,456,789
string.Format("{0:#,###0}", 0); // 0
Если ваша текущая настройка культуры использует запятые в качестве разделителя тысяч, вы можете просто форматировать ее как число с нулевыми десятичными знаками:
String.Format("{0:N0}", 0)
Или:
0.ToString("N0")
from msdn
double value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
Отображает 1,234,567,890
Вы также можете немного поиграть с объектом CultureInfo, если ни одно из других решений не будет работать для вас:
var x = CultureInfo.CurrentCulture;
x.NumberFormat.NumberDecimalSeparator = ",";
x.NumberFormat.NumberDecimalDigits = 0;
x.NumberFormat.NumberGroupSizes = new int[] {3};
Вы можете поместить число после N, чтобы указать число десятичных цифр:
String.Format("{0:n0}", 0) // gives 0
Я добавил еще один ответ, а затем обнаружил, что нулевые значения являются пустой строкой.
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
double x = 23232323.21;
string y = x.ToString("#,0", System.Globalization.CultureInfo.CurrentCulture);
Строка возвращается в текущей культуре, которая является немецкой, поэтому y = 23.232.323
y = 0 при x = 0.
вы просто выразились так:
Console.WriteLine(**$**"Your current amount of money is: **{yourVar:c}**");