如何将十进制属性格式化为货币

时间:2010-08-13 17:28:42

标签: c# decimal currency

我想格式化getter中的值并返回格式化的货币值。

这是可能的,还是我需要将该属性声明为字符串,然后使用string.format。

8 个答案:

答案 0 :(得分:91)

属性可以返回他们想要的任何内容,但是需要返回正确的类型。

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);
    }
}  

答案 1 :(得分:31)

下面也可以,但你不能放入十进制属性的getter。十进制属性的getter只能返回一个小数,格式不适用。

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

答案 2 :(得分:9)

试试这个;

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

它会将123423.083234转换为$ 1,23,423格式。

答案 3 :(得分:4)

您可以使用String.Format,请参阅代码[via How-to Geek]:

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

另见:

答案 4 :(得分:3)

您可以创建扩展方法。我发现这是一个很好的做法,因为无论浏览器设置如何,您都可能需要锁定货币显示。例如,您可能希望始终显示$ 5,000.00而不是5 000,00 $ (#CanadaProblems)

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

答案 5 :(得分:1)

您返回的格式将受您声明的返回类型的限制。所以是的,您可以将属性声明为字符串并返回某些内容的格式化值。在“获取”中,您可以放置​​所需的任何数据检索代码。因此,如果您需要访问某些数值,只需将return语句设置为:

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

答案 6 :(得分:1)

现在,您可以在C#6中使用字符串插值和表达式身体属性。

private decimal _amount;

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

答案 7 :(得分:0)

十进制类型不能包含格式信息。您可以创建另一个属性,比如说FormattedProperty的字符串类型,可以执行您想要的操作。