Відповіді:
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
string.Format("{0:n0}", Double.Parse(yourValue));
Я вважав, що це найпростіший спосіб:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
як розділювач тисяч, наприклад пробіл чи навіть .
.
.
), .NET автоматично замінить кому цим роздільником. Знову закликаю вас прочитати посилання, розміщене Роджером, якщо ви все ще не розумієте, чому це так.
Стандартні формати з відповідними результатами,
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 culture):
(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
Це найкращий формат. Працює у всіх цих випадках:
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
String.Format("{0:#,###,###.##}", MyNumber)
Це дасть вам коми у відповідних пунктах.
Відповідь, яка найбільше проголосувала, була чудовою і була корисною близько 7 років. З введенням C # 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
) не змінилося. Щоб отримати повну характеристику того, що нового, ви можете зайти на цю сторінку .
Якщо ви хочете примусити роздільник "", незалежно від культури (наприклад, у повідомленні про сліди чи журнали), наступний код спрацює і матиме додаткову перевагу сказати наступному хлопцеві, який натрапляє на нього саме те, що ви робите.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
набори відформатовані до "19 400 350"
Наступний приклад відображає кілька значень, які відформатовані за допомогою рядків власного формату, що містять нульові заповнювачі.
String.Format("{0:N1}", 29255.0);
Або
29255.0.ToString("N1")
результат "29255,0"
String.Format("{0:N2}", 29255.0);
Або
29255.0.ToString("N2")
результат "29255,00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Зауважте, що значення, яке ви форматуєте, має бути числовим. Це не схоже на те, що воно буде представляти рядкове число та формат із комами.
String.Format("0,###.###"); also works with decimal places
C # 7.1 (можливо, раніше?) Робить це таким же простим і приємним виглядом, як це має бути, із строповою інтерполяцією:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
Ви можете використовувати таку функцію, як ця, для форматування чисел та необов'язково передавати в потрібних десяткових знаках. Якщо десяткових знаків не вказано, він буде використовувати два знаки після коми.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Я використовую десятковий, але ви можете змінити тип на будь-який інший або використовувати анонімний об’єкт. Ви також можете додати перевірку помилок на негативні значення десяткових знаків.
Метод, який я раніше не переймався культурою та потенційними проблемами форматування, полягає в тому, що я відформатував його як валюту і потім вийняв символ валюти.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
), або використовує більше одного символу для позначення валюти (наприклад da-DK
), або не відокремлює тисячі за допомогою коми (наприклад, більшість материкової Європи).
Нижче є хороше рішення на 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));
Місцевий вихід з США : 9 999 999,00 доларів
Німецький локальний вихід
Locale locale = new Locale("de", "DE");
ВИХІД: 9.999.999,00 €
Вихідний показник індійського локалу
Locale locale = new Locale("de", "DE");
ВИХІД: R.9999999,00
Естонська локальна продукція
Locale locale = new Locale("et", "EE");
ВИХІД: 9 999 999 €
Як ви бачите в різних результатах, вам не доведеться турбуватися про те, що роздільник є комою або крапкою або навіть пробілом, ви можете отримати номер, відформатований відповідно до стандартів i18n
locale
??
Якщо ви хочете показати його в DataGridview, вам слід змінити його тип, тому що за замовчуванням є String, а оскільки ви зміните його на десятковий, він вважає число з плаваючою точкою
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
String.Format("{0:#,##0}", 1234);
також працює без десяткових знаків.