Come posso formattare la proprietà decimale in valuta

Voglio formattare il valore nel getter e restituire un valore di valuta formattato.

È ansible o devo dichiarare la proprietà come una stringa e quindi usare string.format.

Le proprietà possono restituire tutto ciò che vogliono, ma sarà necessario restituire il tipo corretto.

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

La domanda è stata posta … e se fosse un decimale nullable.

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

Qui di seguito funzionerebbe anche, ma non è ansible inserire il getter di una proprietà decimale. L’assorbitore di una proprietà decimale può solo restituire un decimale, per il quale la formattazione non si applica.

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

Prova questo;

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

Convertirà 123423.083234 in formato $ 1,23,423.

Puoi usare String.Format, vedere il codice [via How-to Geek ]:

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

Guarda anche:

  • decimale (riferimento C #) su MSDN
  • Analisi decimale per valuta

È ansible creare un metodo di estensione. Trovo che questa sia una buona pratica in quanto potrebbe essere necessario bloccare una visualizzazione della valuta indipendentemente dalle impostazioni del browser. Ad esempio, potresti voler visualizzare $ 5,000.00 sempre anziché 5 000,00 $ (#CanadaProblems)

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

Il tuo formato restituito sarà limitato dal tipo di reso che dichiari. Quindi sì, puoi dichiarare la proprietà come una stringa e restituire il valore formattato di qualcosa. Nel “get” puoi inserire qualsiasi codice di recupero dei dati di cui hai bisogno. Quindi se hai bisogno di accedere ad alcuni valori numerici, inserisci semplicemente la tua dichiarazione di ritorno come:

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

Ora è ansible utilizzare l’interpolazione delle stringhe e le proprietà del corpo di espressioni in C # 6.

 private decimal _amount; public string FormattedAmount => $"{_amount:C}"; 

Un tipo decimale non può contenere informazioni di formattazione. Puoi creare un’altra proprietà, ad esempio FormattedProperty di un tipo di stringa che esegue ciò che desideri.