it-swarm.com.de

Wie kann ich Dezimalwerte in Währungen formatieren?

Ich möchte den Wert im Getter formatieren und einen formatierten Währungswert zurückgeben.

Ist das möglich oder muss ich die Eigenschaft als String deklarieren und dann string.format verwenden.

48
WingMan20-10

Eigenschaften können alles zurückgeben, was sie wollen, aber es muss der korrekte Typ zurückgegeben werden.

private decimal _amount;

public string FormattedAmount
{
    get { return string.Format("{0:C}", _amount); }
}

Frage wurde gestellt ... was wäre, wenn es eine Dezimalzahl mit Nullen wäre?.

private decimal? _amount;

public string FormattedAmount
{
    get
    {
         return _amount == null ? "null" : string.Format("{0:C}", _amount.Value);
    }
}  
88
Robaticus

Unten würde auch funktionieren, aber Sie können den Getter einer dezimalen Eigenschaft nicht eingeben. Der Getter einer dezimalen Eigenschaft kann nur eine Dezimalzahl zurückgeben, für die keine Formatierung gilt.

decimal moneyvalue = 1921.39m; 
string currencyValue = moneyvalue.ToString("C");
30
Russ

Versuche dies;

  string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234);

Es wird das Format 123423.083234 in $ 1,23,423 konvertieren.

9
Mohan Gopi

Sie können String.Format verwenden, siehe den Code [via How-to-Geek ]:

decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
// Output: $1,921.39

Siehe auch:

4

Sie können eine Erweiterungsmethode erstellen. Ich halte dies für eine bewährte Vorgehensweise, da Sie möglicherweise eine Währungsanzeige unabhängig von der Browsereinstellung sperren müssen. Zum Beispiel möchten Sie vielleicht $ 5.000,00 anstelle von 5.000,00 $ Anzeigen. (# CanadaProblems)

public static class DecimalExtensions
{
    public static string ToCurrency(this decimal decimalValue)
    {
        return $"{decimalValue:C}";
    }
}
3
Atters

Ihr zurückgegebenes Format wird durch den von Ihnen angegebenen Rückgabetyp begrenzt. Ja, Sie können die Eigenschaft als String deklarieren und den formatierten Wert von etwas zurückgeben. Im "Get" können Sie den Code zum Abrufen von Daten eingeben, den Sie benötigen. Wenn Sie also auf einen numerischen Wert zugreifen müssen, setzen Sie Ihre return-Anweisung einfach wie folgt:

    private decimal _myDecimalValue = 15.78m;
    public string MyFormattedValue
    {
        get { return _myDecimalValue.ToString("c"); }
        private set;  //makes this a 'read only' property.
    }
1
Austin Rhymer

Sie können jetzt in C # 6 Zeichenfolgeninterpolations- und Ausdruckseigenschaften verwenden. 

private decimal _amount;

public string FormattedAmount => $"{_amount:C}";
1
Richie

Ein Dezimaltyp kann keine Formatierungsinformationen enthalten. Sie können eine andere Eigenschaft erstellen, z. B. FormattedProperty eines Zeichenfolgentyps, der Ihren Wünschen entspricht.

0
recursive