tôi đã có Tôi muốn định dạng các số như định dạng "Chung" trong bảng tính, có nghĩa là hiển thị số thập phân nếu chúng có ý nghĩa, nhưng cắt chúng ra nếu không. Nói cách khác:
1234,56 => 1,234.56
1234 => 1.234
Nó cần phải hỗ trợ một số lượng tối đa những nơi sau thập phân, nhưng không đặt trailing số không hoặc chấm nếu không cần thiết, và dĩ nhiên, nó cần phải thân thiện với văn hóa. Tôi không bao giờ thực sự tìm ra một cách rõ ràng để làm điều đó bằng cách sử dụng String.Format một mình, nhưng một sự kết hợp của String.Format và Regex.Replace với một số trợ giúp văn hóa từ NumberFormatInfo.CurrentInfo đã làm công việc (LinqPad C# Program).
string FormatNumber<T>(T number, int maxDecimals = 4) {
return Regex.Replace(String.Format("{0:n" + maxDecimals + "}", number),
@"[" + System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator + "]?0+$", "");
}
void Main(){
foreach (var test in new[] { 123, 1234, 1234.56, 123456.789, 1234.56789123 })
Console.WriteLine(test + " = " + FormatNumber(test));
}
Tạo:
123 = 123
1234 = 1,234
1234.56 = 1,234.56
123456.789 = 123,456.789
1234.56789123 = 1,234.5679
Nguồn
2014-12-21 16:40:16
Khi bạn nói "nó không được làm việc", là những gì mà string.Format thực sự đang làm gì? – tomasmcguinness
tôi đã không thử string.Format phương pháp và tôi điều sử dụng định dạng dây rút là dễ dàng – Krishan
Tôi thực sự không hiểu ví dụ của bạn, loại định dạng là gì? (Hoặc là nó chỉ cho tôi) – V4Vendetta