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

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)

  • 您还可以在字母 C 后指定所需的小数位数,例如,如果您的值是 12.123 并且您只想要输出中的 2 个小数位,您可以使用 String.Format("{0:C2}", _amount .Value. 此外,如果您希望将字符串格式化为特定区域性,您可以指定 IFormatProvider。 (3认同)

Rus*_*uss 31

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

decimal moneyvalue = 1921.39m; 
string currencyValue = moneyvalue.ToString("C");
Run Code Online (Sandbox Code Playgroud)


Moh*_*opi 9

试试这个;

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

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


Att*_*ers 8

您可以创建扩展方法。我发现这是一个很好的做法,因为无论浏览器设置如何,您都可能需要锁定货币显示。例如,您可能希望始终显示 $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)


Dar*_*iak 5

您可以使用 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)

也可以看看: