web-dev-qa-db-fra.com

Comment puis-je formater la propriété décimale en devise

Je souhaite formater la valeur dans le getter et renvoyer une valeur monétaire formatée.

Est-ce possible ou dois-je déclarer la propriété en tant que chaîne, puis utiliser string.format.

48
WingMan20-10

Les propriétés peuvent renvoyer tout ce qu'elles veulent, mais il faudra renvoyer le type correct.

private decimal _amount;

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

La question a été posée ... et s’il s’agissait d’un décimal nullable.

private decimal? _amount;

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

Ci-dessous, cela fonctionne également, mais vous ne pouvez pas mettre dans le getter d'une propriété décimale. Le getter d'une propriété décimale peut uniquement renvoyer une décimale, pour laquelle le formatage ne s'applique pas.

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

Essaye ça;

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

Il faudra convertir 123423.083234 au format US $ 1,23,423.

9
Mohan Gopi

Vous pouvez utiliser String.Format, voir le 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

Voir également:

4
Dariusz Woźniak

Vous pouvez créer une méthode d'extension. Je trouve que c'est une bonne pratique car vous devrez peut-être verrouiller un affichage de la devise, quel que soit le paramétrage du navigateur. Par exemple, vous voudrez peut-être afficher 5 000,00 $ toujours au lieu de 5 000,00 $ (# CanadaProblems)

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

Votre format renvoyé sera limité par le type de retour que vous déclarez. Alors oui, vous pouvez déclarer la propriété en tant que chaîne et renvoyer la valeur formatée de quelque chose. Dans le "get", vous pouvez mettre le code de récupération de données dont vous avez besoin. Donc, si vous avez besoin d'accéder à une valeur numérique, indiquez simplement votre déclaration de retour comme suit:

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

Vous pouvez maintenant utiliser les propriétés d'interpolation de chaîne et les propriétés d'expression en C # 6. 

private decimal _amount;

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

Un type décimal ne peut pas contenir d'informations de formatage. Vous pouvez créer une autre propriété, par exemple, FormattedProperty d'un type de chaîne qui fait ce que vous voulez.

0
recursive