Tôi có bảng phí với số tiền và mã đơn vị tiền tệ (USD, JPY, CAD, EUR, v.v.) và đang tìm cách dễ nhất để định dạng đúng loại tiền tệ. Sử dụng mã văn hóa địa phương của tôi (USA) và lấy số thập phân của tôi. ToString ("c") mang lại cho tôi $ 0.00 đầu ra, nhưng tôi muốn ký hiệu tiền tệ chính xác và số thập phân dựa trên mã.Định dạng số thập phân làm đơn vị tiền tệ dựa trên mã đơn vị tiền tệ
Có thư viện nào tồn tại không? Tất nhiên tôi có thể viết một tuyên bố chuyển đổi và các quy tắc tùy chỉnh cho từng người, nhưng nghĩ rằng điều này phải được thực hiện trước đây.
Cập nhật:
Tôi đã sửa đổi mẫu mã Jon B như sau
static IDictionary<string, string> GetCurrencyFormatStrings()
{
var result = new Dictionary<string, string>();
foreach (var ci in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
try
{
var ri = new RegionInfo(ci.Name);
result[ri.ISOCurrencySymbol] =
string.Format("{0}#,#0.{1};({0}#,#0.{1})",
ri.CurrencySymbol,
new string('0',
i.NumberFormat.CurrencyDecimalDigits));
}
catch { }
}
return result;
}
này cho phép tôi chỉ đơn giản là đi Amount.ToString (tệ [ "JPY"]), và định dạng sẽ ra dấu phân cách bằng dấu phẩy trong ngữ cảnh cục bộ của tôi, nhưng đặt ký tự tiền tệ chính xác và vị trí thập phân một cách tự động.
Hãy cho tôi biết nếu có ai có cách làm sạch hơn, hoặc tôi sẽ đánh dấu câu trả lời của Jon là chính xác trong thời gian ngắn.
@AakashM - Trên thực tế nó vẫn tồn tại. Nó được gọi là 'CultureInfo'. –
Rút lại các nhận xét trước đó của tôi, tôi lưu ý rằng ['RegionInfo' biết mã tiền tệ cho đơn vị tiền tệ của một khu vực] (http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.isocurrencysymbol.aspx), do đó, Framework có một số kiến thức về chúng. Tôi nghi ngờ bạn sẽ phải lặp lại mặc dù, vì tôi không thấy bất kỳ tra cứu dựa trên mã tiền tệ nào. – AakashM
@Ramhound 'CultureInfo' cho bạn biết cách định dạng số lượng tiền tệ trong một văn hóa nhất định. Nó không cho bạn biết rằng biểu tượng cho JPY là ¥. – AakashM