Ho una tabella di addebiti con l'importo e il codice di valuta (USD, JPY, CAD, EUR ecc.) E sto cercando il modo più semplice per formattare correttamente la valuta. Usando il mio codice cultura locale (USA) e prendendo il mio decimale. ToString ("c") mi dà $ 0,00 in uscita, ma mi piacerebbe il segno di valuta corretto e il numero di decimali in base al codice.Formato decimale come valuta basata sul codice di valuta
Esistono librerie per questo? Naturalmente posso scrivere un'istruzione switch e regole personalizzate per ognuno, ma ho pensato che fosse già stato fatto prima.
Aggiornamento:
Ho modificato il codice di esempio di Jon B come segue
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;
}
Questo mi permette di andare semplicemente Amount.ToString (valuta [ "JPY"]), e il formato sarà in uscita il separatore di virgola nel mio contesto locale, ma inserire automaticamente il simbolo di valuta corretto e le posizioni decimali.
Fatemi sapere se qualcuno ha un modo più pulito per farlo, o contrassegnerò brevemente la risposta di Jon come corretta.
@AakashM - In realtà esiste. Si chiama 'CultureInfo'. –
Ritirando i miei commenti precedenti, noto che ['RegionInfo' conosce il codice valuta per la valuta di una regione] (http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.isocurrencysymbol.aspx), quindi il Framework ha qualche conoscenza di questi. Ho il sospetto che tu debba ripetere l'iterazione, poiché non vedo alcuna ricerca basata sul codice valuta. – AakashM
@Ramhound 'CultureInfo' ti spiega come formattare una quantità di valuta in una determinata cultura. Non ti dice che il simbolo per JPY è ¥. – AakashM