Відповіді:
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);також працює без десяткових знаків.