Ich möchte einen Dezimalwert als Währungswert formatieren.
Wie kann ich das machen?
Ich möchte einen Dezimalwert als Währungswert formatieren.
Wie kann ich das machen?
Antworten:
Eigenschaften können alles zurückgeben, was sie wollen, aber es muss der richtige Typ zurückgegeben werden.
private decimal _amount;
public string FormattedAmount
{
get { return string.Format("{0:C}", _amount); }
}
Die Frage wurde gestellt ... was wäre, wenn es eine nullbare Dezimalstelle wäre?
private decimal? _amount;
public string FormattedAmount
{
get
{
return _amount == null ? "null" : string.Format("{0:C}", _amount.Value);
}
}
Das Folgende würde auch funktionieren, aber Sie können den Getter einer Dezimaleigenschaft nicht eingeben. Der Getter einer Dezimaleigenschaft kann nur eine Dezimalzahl zurückgeben, für die die Formatierung nicht gilt.
decimal moneyvalue = 1921.39m;
string currencyValue = moneyvalue.ToString("C");
Versuche dies;
string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234);
Es wird 123423.083234 in das Format $ 1,23,423 konvertieren.
Sie können eine Erweiterungsmethode erstellen. Ich halte dies für eine gute Vorgehensweise, da Sie möglicherweise eine Währungsanzeige unabhängig von der Browsereinstellung sperren müssen. Beispielsweise möchten Sie möglicherweise immer 5.000,00 USD anstelle von 5.000,00 USD anzeigen (#CanadaProblems).
public static class DecimalExtensions
{
public static string ToCurrency(this decimal decimalValue)
{
return $"{decimalValue:C}";
}
}
Sie können String.Format verwenden, siehe 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:
Ihr zurückgegebenes Format wird durch den von Ihnen deklarierten Rückgabetyp begrenzt. Ja, Sie können die Eigenschaft als Zeichenfolge deklarieren und den formatierten Wert von etwas zurückgeben. In "get" können Sie den gewünschten Datenabrufcode eingeben. Wenn Sie also auf einen numerischen Wert zugreifen müssen, geben Sie Ihre return-Anweisung einfach wie folgt ein:
private decimal _myDecimalValue = 15.78m;
public string MyFormattedValue
{
get { return _myDecimalValue.ToString("c"); }
private set; //makes this a 'read only' property.
}