Jawaban:
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));
Saya menemukan ini sebagai cara paling sederhana:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
sebagai pemisah ribuan, misalnya spasi atau genap .
.
.
), .NET akan secara otomatis mengganti koma dengan pemisah itu. Sekali lagi, saya mendorong Anda untuk membaca tautan yang diposting oleh Roger jika Anda masih tidak mengerti mengapa ini terjadi.
Format standar, dengan output terkait,
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);
Contoh output (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
Ini format terbaik. Bekerja dalam semua kasus tersebut:
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)
Itu akan memberi Anda koma pada titik yang relevan.
Jawaban yang paling banyak dipilih sangat bagus dan telah membantu selama sekitar 7 tahun. Dengan diperkenalkannya C # 6.0 dan khususnya Interpolasi String ada cara yang lebih rapi dan, lebih aman, untuk melakukan apa yang diminta 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
Di mana variabel i
ditempatkan menggantikan placeholder (yaitu {0}
). Jadi tidak perlu mengingat objek mana yang menuju ke posisi mana. Format (yaitu :n
) tidak berubah. Untuk fitur lengkap tentang apa yang baru, Anda dapat pergi ke halaman ini .
Jika Anda ingin memaksakan pemisah "," terlepas dari budaya (misalnya dalam jejak atau pesan log), kode berikut ini akan berfungsi dan memiliki manfaat tambahan untuk memberi tahu orang berikutnya yang menemukan apa yang sedang Anda lakukan.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
set diformat ke "19.400.320"
Contoh berikut menampilkan beberapa nilai yang diformat dengan menggunakan string format kustom yang menyertakan tempat penampung nol.
String.Format("{0:N1}", 29255.0);
Atau
29255.0.ToString("N1")
hasil "29.255.0"
String.Format("{0:N2}", 29255.0);
Atau
29255.0.ToString("N2")
hasil "29.255,00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Perhatikan bahwa nilai yang Anda format harus berupa angka. Tampaknya tidak akan membutuhkan representasi string dari angka dan format dengan koma.
String.Format("0,###.###"); also works with decimal places
C # 7.1 (mungkin sebelumnya?) Menjadikan ini mudah dan terlihat bagus seperti seharusnya, dengan interpolasi string:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
Anda dapat menggunakan fungsi seperti ini untuk memformat angka dan meneruskan tempat desimal yang diinginkan. Jika tempat desimal tidak ditentukan akan menggunakan dua tempat desimal.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Saya menggunakan desimal tetapi Anda dapat mengubah jenisnya ke yang lain atau menggunakan objek anonim. Anda juga bisa menambahkan pengecekan error untuk nilai tempat desimal negatif.
Metode yang saya gunakan untuk tidak khawatir lagi tentang budaya dan potensi masalah pemformatan adalah bahwa saya memformatnya sebagai mata uang dan mengeluarkan simbol mata uang setelahnya.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
), atau menggunakan lebih dari satu karakter untuk menunjukkan mata uang (misalnya da-DK
), atau tidak memisahkan ribuan menggunakan koma (misalnya sebagian besar dari daratan Eropa).
Di bawah ini adalah solusi yang bagus di Jawa!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
atau untuk cara yang lebih kuat Anda mungkin ingin mendapatkan lokal tempat tertentu, kemudian gunakan seperti di bawah ini:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
OUTPUT Lokal AS : $ 9.999.999,00
Output Lokal Jerman
Locale locale = new Locale("de", "DE");
OUTPUT: 9.999.999,00 €
Output Lokal India
Locale locale = new Locale("de", "DE");
OUTPUT: Rs.9.999.999,00
Output Lokal Estonia
Locale locale = new Locale("et", "EE");
OUTPUT: 9 999 999 €
Seperti yang dapat Anda lihat di keluaran yang berbeda, Anda tidak perlu khawatir pemisah menjadi koma atau titik atau bahkan ruang, Anda bisa mendapatkan nomor yang diformat sesuai dengan standar i18n
locale
??
Jika Anda ingin menampilkannya di DataGridview, Anda harus mengubah tipenya, karena defaultnya adalah String dan karena Anda mengubahnya menjadi desimal dianggap sebagai Angka dengan titik mengambang
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);
juga berfungsi tanpa tempat desimal.