Ich möchte einen Dezimalwert als Währungswert formatieren.
Wie kann ich das machen?
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");
quelle
Versuche dies;
string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234);
Es wird 123423.083234 in das Format $ 1,23,423 konvertieren.
quelle
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}"; } }
quelle
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:
quelle
In C # 6 können Sie jetzt die Eigenschaften der Zeichenfolgeninterpolation und des Ausdruckskörpers verwenden.
private decimal _amount; public string FormattedAmount => $"{_amount:C}";
quelle
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. }
quelle
Ein Dezimaltyp darf keine Formatierungsinformationen enthalten. Sie können eine andere Eigenschaft erstellen, beispielsweise
FormattedProperty
einen Zeichenfolgentyp, der das tut, was Sie wollen.quelle