【发布时间】:2011-03-29 14:25:56
【问题描述】:
我想将十进制值格式化为货币值。
我该怎么做?
【问题讨论】:
我想将十进制值格式化为货币值。
我该怎么做?
【问题讨论】:
属性可以返回任何他们想要的,但它需要返回正确的类型。
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);
}
}
【讨论】:
下面也可以,但你不能放入十进制属性的吸气剂。小数属性的 getter 只能返回小数,格式不适用。
decimal moneyvalue = 1921.39m;
string currencyValue = moneyvalue.ToString("C");
【讨论】:
试试这个;
string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234);
它将 123423.083234 转换为 $1,23,423 格式。
【讨论】:
您可以创建扩展方法。我发现这是一个很好的做法,因为无论浏览器设置如何,您都可能需要锁定货币显示。例如,您可能希望始终显示 $5,000.00 而不是 5 000,00 $ (#CanadaProblems)
public static class DecimalExtensions
{
public static string ToCurrency(this decimal decimalValue)
{
return $"{decimalValue:C}";
}
}
【讨论】:
你可以使用String.Format,见代码[通过How-to Geek]:
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
// Output: $1,921.39
另见:
【讨论】:
您现在可以在 C# 6 中使用字符串插值和表达式主体属性。
private decimal _amount;
public string FormattedAmount => $"{_amount:C}";
【讨论】:
您的返回格式将受到您声明的返回类型的限制。所以是的,您可以将属性声明为字符串并返回某些内容的格式化值。在“获取”中,您可以放置您需要的任何数据检索代码。因此,如果您需要访问某个数值,只需将您的 return 语句设置为:
private decimal _myDecimalValue = 15.78m;
public string MyFormattedValue
{
get { return _myDecimalValue.ToString("c"); }
private set; //makes this a 'read only' property.
}
【讨论】:
十进制类型不能包含格式信息。您可以创建另一个属性,例如 FormattedProperty 的字符串类型,它可以满足您的需求。
【讨论】: