Mam tabelę opłat z kwotą i kodem waluty (USD, JPY, CAD, EUR itp.) I szukam najłatwiejszego sposobu prawidłowego sformatowania waluty. Używając mojego lokalnego kodu kultury (USA) i biorąc mój decimal.ToString ("c") pobiera mi 0,00 USD, ale chciałbym, aby poprawny znak waluty i liczba miejsc po przecinku na podstawie kodu.Format dziesiętny jako waluta na podstawie kodu waluty
Czy istnieją do tego biblioteki? Mogę oczywiście napisać instrukcję zmiany i reguły niestandardowe dla każdego z nich, ale uważam, że musiało to być zrobione wcześniej.
Aktualizacja:
Mam zmodyfikowany kod przykładowy Jon B w następujący sposób
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;
}
To pozwala mi iść Amount.ToString (waluta [ "JPY"]), a format wyświetli separator przecinka w moim lokalnym kontekście, ale automatycznie ustaw prawidłowy symbol waluty i miejsca dziesiętne.
Daj mi znać, jeśli ktoś ma czystszy sposób robienia tego, albo wkrótce oznaczy odpowiedź Jona jako poprawną.
@AakashM - Właściwie to nie istnieje. Nazywa się "CultureInfo". –
Wychodząc z poprzednich komentarzy, zauważam, że ["RegionInfo" zna kod waluty dla waluty regionu] (http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.isocurrencysymbol.aspx), więc Framework ma pewną wiedzę na ten temat. Podejrzewam, że będziesz musiał powtórzyć iterację, ponieważ nie widzę żadnego wyszukiwania opartego na kodzie waluty. – AakashM
@Ramhound 'CultureInfo' mówi, jak sformatować walutową ilość w danej kulturze. Nie oznacza to, że symbolem JPY jest ¥. – AakashM