webentwicklung-frage-antwort-db.com.de

Währungsformat für die Anzeige

Gibt es eine Bibliothek, um die korrekte Währung für ein Land darzustellen?

BeispielUK - £ 127,54 Niederlande € 127,54 - USA $ 127,54

usw..

Einige Dinge zu beachten,

  1. Währungszeichen

  2. Platzierung des Währungssymbols - Es kann entweder vor oder nach den Ziffern von platziert werden.

  3. Negative Betragsanzeige

42
001

Versuchen Sie den Währungsformat-Spezifizierer ("C"). Es berücksichtigt automatisch die aktuelle Kultur der Benutzeroberfläche und zeigt die entsprechenden Währungswerte an.

Sie können es mit String.Format oder der überladenen ToString-Methode für einen numerischen Typ verwenden.

Zum Beispiel:

double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", CultureInfo.CreateSpecificCulture("da-DK")));

// The example displays the following output on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       kr 12.345,679
78
Cody Gray

Diese Art von Funktionalität ist eingebaut.

Bei Verwendung einer Dezimalzahl können Sie eine Formatzeichenfolge "C" oder "c" verwenden.

decimal dec = 123.00M;
string uk = dec.ToString("C", new CultureInfo("en-GB")); // uk holds "£123.00"
string us = dec.ToString("C", new CultureInfo("en-US")); // us holds "$123.00"
26
Oded

Sie können string.Format("{0:c}", value) verwenden.

Siehe auch hier:

17
Martin Buberl

Das Problem bei der Eingabe einer bestimmten Zahl und der Anzeige mit .ToString ("C", culture) besteht darin, dass der Betrag effektiv in die Standardwährung der angegebenen Kultur geändert wird. Wenn Sie einen bestimmten Betrag haben, den ISO-Währungscode dieses Betrags, und Sie ihn für eine bestimmte Kultur anzeigen möchten, würde ich empfehlen, eine dezimale Erweiterungsmethode wie die unten stehende zu erstellen. Dies setzt nicht automatisch voraus, dass die Währung in der Standardwährung der Kultur ist:

public static string ToFormattedCurrencyString(
    this decimal currencyAmount,
    string isoCurrencyCode,
CultureInfo userCulture)
{
    var userCurrencyCode = new RegionInfo(userCulture.Name).ISOCurrencySymbol;

    if (userCurrencyCode == isoCurrencyCode)
    {
        return currencyAmount.ToString("C", userCulture);
    }

    return string.Format(
        "{0} {1}", 
        isoCurrencyCode, 
        currencyAmount.ToString("N2", userCulture));
}

Dabei wird entweder das Hauswährungssymbol oder der ISO-Währungscode mit dem Betrag verwendet - je nachdem, was angemessener ist. Mehr zum Thema in diesem Blogbeitrag .

5
jakejgordon

Dieser Code (setzt die Währung auf GB (Großbritannien/Großbritannien/England/£), druckt dann eine Zeile. Dann setzt die Währung auf US/$ und druckt eine Zeile.)

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB",false);         
Console.WriteLine("bbbbbbb   {0:c}",4321.2);
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US",false);
Console.WriteLine("bbbbbbb   {0:c}",4321.2);

Wird anzeigen-

bbbbbbb   £4,321.20
bbbbbbb   $4,321.20

Für eine Liste von Kulturnamen, z. en-GB en-US e.t.c.
http://msdn.Microsoft.com/de-de/library/system.globalization.cultureinfo(v=vs.80).aspx

2
barlop

Wenn Sie nur das Währungssymbol und die Anzahl der Dezimalstellen haben, können Sie die folgende Hilfsfunktion verwenden, die das Symbol/die Betragsreihenfolge, die Trennzeichen usw. berücksichtigt, und nur das Währungssymbol selbst und die Anzahl der anzuzeigenden Dezimalstellen ändert.

public static string FormatCurrency(string currencySymbol, Decimal currency, int decPlaces)
{
    NumberFormatInfo localFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
    localFormat.CurrencySymbol = currencySymbol;
    localFormat.CurrencyDecimalDigits = decPlaces;
    return currency.ToString("c", localFormat);
}
1
Clint Good