Câu trả lời:
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));
Tôi thấy đây là cách đơn giản nhất:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
là một dấu phân cách hàng nghìn, ví dụ như một khoảng trắng hoặc thậm chí .
.
.
), .NET sẽ tự động thay thế dấu phẩy bằng dấu phân cách đó. Một lần nữa, tôi khuyên bạn nên đọc liên kết được đăng bởi Roger nếu bạn vẫn không hiểu tại sao lại như vậy.
Các định dạng tiêu chuẩn, với đầu ra liên quan của chúng,
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);
Ví dụ đầu ra (văn hóa 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
Đây là định dạng tốt nhất. Hoạt động trong tất cả các trường hợp:
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)
Điều đó sẽ cung cấp cho bạn dấu phẩy tại các điểm có liên quan.
Câu trả lời được bình chọn nhiều nhất là tuyệt vời và đã hữu ích trong khoảng 7 năm. Với sự ra đời của C # 6.0 và cụ thể là Nội suy chuỗi, gọn gàng hơn và, IMO an toàn hơn, cách thực hiện những gì đã được yêu cầu 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
Trường hợp biến i
được đặt thay cho trình giữ chỗ (tức là {0}
). Vì vậy, không cần phải nhớ đối tượng đi đến vị trí nào. Định dạng (nghĩa là :n
) không thay đổi. Để biết tính năng hoàn chỉnh của những gì mới, bạn có thể truy cập trang này .
Nếu bạn muốn sử dụng dấu phân cách "," bất kể văn hóa (ví dụ như trong dấu vết hoặc thông điệp tường trình), đoạn mã sau sẽ hoạt động và có thêm lợi ích là nói với anh chàng tiếp theo tình cờ biết chính xác những gì bạn đang làm.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
đặt định dạng thành "19,400,320"
Ví dụ sau hiển thị một số giá trị được định dạng bằng cách sử dụng các chuỗi định dạng tùy chỉnh bao gồm các trình giữ chỗ bằng không.
String.Format("{0:N1}", 29255.0);
Hoặc là
29255.0.ToString("N1")
kết quả "29.255.0"
String.Format("{0:N2}", 29255.0);
Hoặc là
29255.0.ToString("N2")
kết quả "29.255,00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Lưu ý rằng giá trị mà bạn định dạng phải là số. Không có vẻ như nó sẽ có một chuỗi đại diện cho một số và định dạng bằng dấu phẩy.
String.Format("0,###.###"); also works with decimal places
C # 7.1 (có lẽ sớm hơn?) Làm cho điều này dễ dàng và đẹp mắt như mong muốn, với phép nội suy chuỗi:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
Bạn có thể sử dụng một hàm như thế này để định dạng số và tùy ý chuyển vào vị trí thập phân mong muốn. Nếu vị trí thập phân không được chỉ định, nó sẽ sử dụng hai vị trí thập phân.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Tôi sử dụng số thập phân nhưng bạn có thể thay đổi loại thành bất kỳ loại nào khác hoặc sử dụng một đối tượng ẩn danh. Bạn cũng có thể thêm kiểm tra lỗi cho các giá trị thập phân âm.
Phương pháp tôi đã sử dụng để không còn lo lắng về văn hóa và các vấn đề định dạng tiềm năng là tôi đã định dạng nó dưới dạng tiền tệ và lấy biểu tượng tiền tệ sau đó.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
) hoặc sử dụng nhiều hơn một ký tự để biểu thị tiền tệ (ví dụ da-DK
) hoặc không tách hàng nghìn bằng dấu phẩy (ví dụ: của lục địa châu Âu).
Dưới đây là một giải pháp tốt trong Java!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
hoặc cho một cách mạnh mẽ hơn, bạn có thể muốn có được địa điểm của một địa điểm cụ thể, sau đó sử dụng như dưới đây:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
Địa điểm Hoa Kỳ ĐẦU RA: $ 9,999.999,00
Sản lượng địa phương Đức
Locale locale = new Locale("de", "DE");
ĐẦU RA: 9,999.999,00 €
Sản lượng địa phương Ấn Độ
Locale locale = new Locale("de", "DE");
ĐẦU RA: .9.999.999,00
Sản lượng địa phương tiếng Estonia
Locale locale = new Locale("et", "EE");
ĐẦU RA: 9 999 999 €
Như bạn có thể thấy trong các đầu ra khác nhau, bạn không phải lo lắng về dấu phân cách là dấu phẩy hoặc dấu chấm hoặc thậm chí là khoảng trắng, bạn có thể lấy số được định dạng theo tiêu chuẩn i18n
locale
??
Nếu bạn muốn hiển thị nó trong DataGridview, bạn nên thay đổi loại của nó, vì mặc định là Chuỗi và vì bạn thay đổi nó thành số thập phân nên nó được coi là Số có dấu phẩy động
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);
cũng hoạt động không có vị trí thập phân.