Win*_*-10 58 c# currency decimal
我想格式化getter中的值并返回格式化的货币值.
这是可能的还是我需要将属性声明为字符串然后使用string.format.
Rob*_*cus 96
属性可以返回他们想要的任何内容,但是需要返回正确的类型.
private decimal _amount;
public string FormattedAmount
{
get { return string.Format("{0:C}", _amount); }
}
Run Code Online (Sandbox Code Playgroud)
问的问题是......如果它是一个可以为空的十进制数.
private decimal? _amount;
public string FormattedAmount
{
get
{
return _amount == null ? "null" : string.Format("{0:C}", _amount.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
Rus*_*uss 31
下面也可以,但你不能放入十进制属性的getter.十进制属性的getter只能返回一个小数,格式不适用.
decimal moneyvalue = 1921.39m;
string currencyValue = moneyvalue.ToString("C");
Run Code Online (Sandbox Code Playgroud)
试试这个;
string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234);
Run Code Online (Sandbox Code Playgroud)
它会将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}";
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 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
Run Code Online (Sandbox Code Playgroud)
也可以看看: