Format dezimal als Währung basiert auf die Währung code
Ich habe eine Tabelle der Gebühren, der Betrag und die Währung code (USD, JPY, CAD, EUR etc.), und bin auf der Suche nach der einfachste Weg, um richtig formatieren Sie die Währung. Mit meinem lokalen Kultur-code (USA) und das dezimal.ToString("c") bekommt von mir $0.00 Ausgang, aber ich möchte die richtige Währung Zeichen und die Anzahl der Dezimalstellen basiert auf dem code.
Tun alle Bibliotheken gibt es für diese? Ich kann natürlich schreiben Sie eine switch-Anweisung und individuelle Regeln für jeden, aber dachte, das muss getan worden sein, bevor.
Update:
Habe ich geändert Jon B-sample-code wie folgt
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;
}
Dies ermöglicht es mir, einfach zu gehen, Betrag.ToString(Währung["JPY"]), und das format der Ausgabe das Komma-Trennzeichen in meinem lokalen Kontext, sondern auch die richtige Währung symbol und Dezimalstellen automatisch.
Lassen Sie mich wissen, wenn jemand eine bessere Möglichkeit, dies zu tun, oder ich werde mark Jon ' s Antwort als richtig kurz.
- Tatsächlich existiert es. Die genannte
CultureInfo
. - Einfahren meine vorherigen Kommentare, ich beachten Sie, dass
RegionInfo
kennt die Währung code für eine region, Währung, so dass der Rahmen hat einige Kenntnisse über diese. Ich vermute, Sie gehen zu müssen, zu iterieren, obwohl, wie ich sehe keine Währung-code-basierte Suche. CultureInfo
erzählt Sie, wie das formatieren einer Währung-ish Menge in einer bestimmten Kultur. Es muss Ihnen nicht sagen, dass das symbol für JPY ist ¥.- Suchen Sie hier ? [Vorherige Frage von Währung ISO-codes][1] [1]: stackoverflow.com/questions/2763128/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie bauen ein Wörterbuch, um zu gehen von ISO-Währungssymbol (USD) zu Währungssymbol ($):
Das ist die grundlegende Idee, die Sie brauchen, zu zwicken, um Ihre Bedürfnisse anzupassen.
Beachten Sie, dass Sie zwar die
CultureInfo
- Klasse zu konvertieren, um eine Zeichenfolge für eine bestimmte Kultur, sondern, wie schon in Alexei ' s Kommentar, das wird dazu führen, dass jede saite ein klein wenig anders (wie von 1,00 vs 1,00). Je nachdem, was Sie verwenden, hängt von Ihren Bedürfnissen ab.RegionInfo
(रु
) für die Indische Rupie; ich vermute, dass seine Kunden/Nutzer würden es vorziehen, um zu sehen, das symbol der Währung für die spezifische Kultur "en-IN" (Rs.
) eher als etwas, das Sie wahrscheinlich Lesen als " ein'. Tat das Zeug gut, ist schwer und erfordert einen viel des kulturellen Wissens.Hier sind die Ergebnisse der Aufruf FormatCurrency für ein paar verschiedene Währungscodes:
c.Name
stattc.LCID
weil man kann die Maschine-spezifischen CultureNotFoundExceptionsSoll gemacht werden durch die übergabe der
CultureInfo
: