Я хочу добавить запятую в тысячу мест для числа. String.Format()
?
.NET String.Format() для добавления запятых в тысячи мест для номера
Ответ 1
String.Format("{0:n}", 1234); //Output: 1,234.00
string.Format("{0:n0}", 9876); // no digits after the decimal point. Output: 9,876
Ответ 2
Я нашел, что это самый простой способ:
myInteger.ToString("N0")
Ответ 3
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
Ответ 4
Если вы хотите, чтобы культура была специфичной, вы можете попробовать следующее:
(19950000.0).ToString("N",new CultureInfo("en-US"))
= 19,950,000.00
(19950000.0).ToString("N",new CultureInfo("is-IS"))
= 19.950.000,00
Примечание. В некоторых культурах используется ,
для обозначения десятичного, а не .
, поэтому будьте осторожны.
Ответ 5
Стандартные форматы со связанными с ними выходами
Console.WriteLine("Standard Numeric Format Specifiers");
String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" +
"(D) Decimal:. . . . . . . . . {0:D}\n" +
"(E) Scientific: . . . . . . . {1:E}\n" +
"(F) Fixed point:. . . . . . . {1:F}\n" +
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(N) Number: . . . . . . . . . {0:N}\n" +
"(P) Percent:. . . . . . . . . {1:P}\n" +
"(R) Round-trip: . . . . . . . {1:R}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
- 1234, -1234.565F);
Console.WriteLine(s);
Пример вывода (культура en-us):
(C) Currency: . . . . . . . . ($1,234.00)
(D) Decimal:. . . . . . . . . -1234
(E) Scientific: . . . . . . . -1.234565E+003
(F) Fixed point:. . . . . . . -1234.57
(G) General:. . . . . . . . . -1234
(default):. . . . . . . . -1234 (default = 'G')
(N) Number: . . . . . . . . . -1,234.00
(P) Percent:. . . . . . . . . -123,456.50 %
(R) Round-trip: . . . . . . . -1234.565
(X) Hexadecimal:. . . . . . . FFFFFB2E
Ответ 6
Это лучший формат. Работает во всех этих случаях:
String.Format( "{0:#,##0.##}", 0 ); // 0
String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - some of the formats above fail here.
String.Format( "{0:#,##0.##}", 12314 ); // 12,314
String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23
String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2
String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2
Ответ 7
String.Format("{0:#,###,###.##}", MyNumber)
Это даст вам запятые в соответствующих точках.
Ответ 8
Если вы хотите принудительно выделить разделитель "," независимо от культуры (например, в сообщении трассировки или журнала), следующий код будет работать и имеет дополнительное преимущество, чтобы сообщить следующему парню, который наткнулся на него точно, что вы делает.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
устанавливает формат в "19,400,320"
Ответ 9
Самый проголосовавший ответ был отличным и полезен около 7 лет. С введением С# 6.0 и, в частности, String Interpolation там более аккуратный и более безопасный IMO способ сделать то, что было задано to add commas in thousands place for a number
:
var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal
Если переменная i
помещается вместо заполнителя (т.е. {0}
). Поэтому нет необходимости помнить, какой объект переходит в какую позицию. Форматирование (т.е. :n
) не изменилось. Для получения полной информации о том, что нового, вы можете перейти на эту страницу.
Ответ 10
В следующем примере отображаются несколько значений, которые форматируются с использованием строк пользовательского формата, которые включают нулевые заполнители.
String.Format("{0:N1}", 29255.0);
или
29255.0.ToString("N1")
результат "29,255.0"
String.Format("{0:N2}", 29255.0);
или
29255.0.ToString("N2")
результат "29,255.00"
Ответ 11
просто как это:
float num = 23658; // for example
num = num.ToString("N0"); // Returns 23,658
больше информации здесь
Ответ 12
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Ответ 13
Например, String.Format("{0:0,0}", 1);
возвращает 01, для меня неверно
Это работает для меня
19950000.ToString("#,#", CultureInfo.InvariantCulture));
Выход 19950000
Ответ 14
Обратите внимание, что значение, которое вы форматируете, должно быть числовым. Это не похоже на то, что для строкового представления числа и формата будет запятая.
Ответ 15
Упрощен, используя строчную интерполяцию вместо String.Format
$"{12456:n0}"; // 12,456
$"{12456:n2}"; // 12,456.00
или с помощью yourVariable
double yourVariable = 12456.0;
$"{yourVariable:n0}";
$"{yourVariable:n2}";
Ответ 16
Вы можете использовать такую функцию, чтобы форматировать числа и, возможно, передавать нужные десятичные знаки. Если десятичные разряды не указаны, они будут использовать два десятичных знака.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Я использую десятичную, но вы можете изменить тип на любой другой или использовать анонимный объект. Вы также можете добавить проверку ошибок для значений отрицательных десятичных знаков.
Ответ 17
String.Format("0,###.###"); also works with decimal places
Ответ 18
Метод, который я больше не беспокоился о культурах и проблемах с форматированием, заключается в том, что я отформатировал его как валюту и затем вынул символ валюты.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
Ответ 19
Ниже приведено хорошее решение на Java!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
или для более надежного способа вы можете получить локаль определенного места, а затем используйте, как показано ниже:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
US Locale OUTPUT: $9,999,999.00
Немецкий Выход локали
Locale locale = new Locale("de", "DE");
ВЫХОД: 9.999.999,00 €
Индийский Выход локали
Locale locale = new Locale("de", "DE");
ВЫХОД: Rs.9,999,999.00
Эстонский Выход локали
Locale locale = new Locale("et", "EE");
ВЫХОД: 9 999 999 €
Как вы можете видеть на разных выходах, вам не нужно беспокоиться о том, что разделителем является запятая или точка или даже пробел. может получить номер, отформатированный в соответствии со стандартами i18n
Ответ 20
Если вы хотите показать его в DataGridview, вы должны изменить его тип, потому что по умолчанию это String, и поскольку вы меняете его на десятичный, он считает Number с плавающей точкой
Dim dt As DataTable = New DataTable
dt.Columns.Add("col1", GetType(Decimal))
dt.Rows.Add(1)
dt.Rows.Add(10)
dt.Rows.Add(2)
DataGridView1.DataSource = dt