Số định dạng có thể được xử lý cho bạn bằng cách khuôn khổ nếu bạn sử dụng đúng culture khi thao tác số.
Console.WriteLine(4.3);
Console.WriteLine(4.3.ToString(CultureInfo.GetCultureInfo("fr-fr")));
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fr-fr");
Console.WriteLine(4.3);
Nếu bạn muốn hiển thị "một lần", phương pháp thứ hai sẽ hoạt động. Nếu bạn muốn hiển thị mọi số một cách chính xác, bạn thực sự nên cài đặt current thread's culture. Bằng cách đó, bất kỳ thao tác số nào sẽ xử lý dấu phân cách thập phân, nhóm các ký tự và mọi thứ cụ thể về văn hóa khác một cách chính xác.
Cũng vậy với việc phân tích cú pháp số. Nếu người dùng nhập 1,234
, làm cách nào để biết liệu họ đã nhập 1.234
(dấu phẩy là dấu tách thập phân) hay 1234
(dấu phẩy là dấu tách nhóm)? Đây là nơi các nền văn hóa giúp ra như nó biết làm thế nào để hiển thị con số và cũng có thể được sử dụng để phân tích chúng một cách chính xác:
Console.WriteLine(double.Parse("1,234"));
Console.WriteLine(double.Parse("1,234", CultureInfo.GetCultureInfo("fr-fr")));
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fr-fr");
Console.WriteLine(double.Parse("1,234"));
Ý chí trên đầu ra 1234
(dấu phẩy là một dấu phân cách thập phân trong tôi en-us văn hóa mặc định), 1.234
(dấu phẩy là dấu phân cách thập phân bằng tiếng Pháp) và 1,234
(dấu phẩy là dấu phân tách thập phân bằng tiếng Pháp và văn bản của chuỗi được đặt thành tiếng Pháp để hiển thị bằng văn bản này - do đó dấu phẩy là dấu tách thập phân ở đầu ra).
cũng sẽ xử lý hàng nghìn lượt cũng được thực hiện khác nhau. – dove
Nhưng nó có những bất lợi mà bạn phải tự chèn thông tin văn hóa trong MỌI ToString, String.Format, Number.Parse và phương pháp tương tự trong mã của bạn. – Foxfire
Nó giúp cho một trường hợp cụ thể nhưng không cho phép chỉ định dấu thập phân. –