Подтвердить что ты не робот

Как я могу форматировать десятичное свойство в валюте

Я хочу отформатировать значение в getter и вернуть сформированное значение валюты.

Возможно ли это, или мне нужно объявить свойство как строку, а затем использовать string.format.

4b9b3361

Ответ 1

Свойства могут возвращать все, что они хотят, но нужно вернуть правильный тип.

private decimal _amount;

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

Вопрос был задан... что, если он был десятичной точкой с нулевым значением.

private decimal? _amount;

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

Ответ 2

Ниже также будет работать, но вы не можете установить получателя десятичного свойства. Получатель десятичного свойства может возвращать только десятичное число, для которого форматирование не применяется.

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

Ответ 4

Попробуйте это;

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

Он преобразует 123423.083234 в формат $1,23,423.

Ответ 5

Вы можете создать метод расширения. Я считаю, что это хорошая практика, поскольку вам может потребоваться заблокировать отображение валюты независимо от настройки браузера. Например, вы можете отображать $5000.00 всегда вместо 5 000,00 $ (#CanadaProblems)

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

Ответ 6

Ваш возвращенный формат будет ограничен типом возвращаемого вами типа. Итак, да, вы можете объявить свойство как строку и вернуть отформатированное значение чего-то. В "get" вы можете поместить любой код поиска данных, который вам нужен. Поэтому, если вам нужно получить доступ к некоторому числовому значению, просто поставьте оператор return как:

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

Ответ 7

Теперь вы можете использовать свойства интерполяции строк и выражения в С# 6.

private decimal _amount;

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

Ответ 8

Десятичный тип не может содержать информацию о форматировании. Вы можете создать другое свойство, скажем FormattedProperty строкового типа, который делает то, что вы хотите.