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

Posted

技术标签:

【中文标题】如何将十进制属性格式化为货币?【英文标题】:How can I format decimal property to currency? 【发布时间】:2011-03-29 14:25:56 【问题描述】:

我想将十进制值格式化为货币值。

我该怎么做?

【问题讨论】:

【参考方案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);
    
  

【讨论】:

如果金额是可以为空的小数会怎样? 您还可以在字母 C 之后指定所需的小数位数,例如,如果您的值是 12.123,并且您只希望输出中有 2 个小数位,则可以使用 String.Format(" 0:C2", _amount.Value。此外,如果您希望将字符串格式化为特定的文化,您可以指定 IFormatProvider。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

试试这个;

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

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

【讨论】:

【参考方案4】:

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

public static class DecimalExtensions

    public static string ToCurrency(this decimal decimalValue)
    
        return $"decimalValue:C";
    

【讨论】:

【参考方案5】:

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

另见:

decimal (C# Reference) at MSDN Decimal parse for currency

【讨论】:

【参考方案6】:

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

private decimal _amount;

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

十进制类型不能包含格式信息。您可以创建另一个属性,例如 FormattedProperty 的字符串类型,它可以满足您的需求。

【讨论】:

以上是关于如何将十进制属性格式化为货币?的主要内容,如果未能解决你的问题,请参考以下文章

货币的十进制格式

NewtonSoft JsonConverter - 访问其他属性

Java - 如何使用货币格式将字符串转换为大十进制

如何在laravel中格式化为包含逗号和点的十进制数?

如何在java中将十进制数字格式化为两个小数点? [复制]

如何将String / char格式化为十六进制值正确