我们目前正在使用以下内容在我们的 Web 应用程序中创建美元值:
string.Format("{0:C0}", dollarValue );
在此示例中,如果 DollarValue 为 145,那么我们将看到:$145。如果是 -145,那么我们将看到 ($145) 而不是 -$145。请注意,对我们来说,dollarValue 是一个 double,但它可以是任何数字类型。我认为。
无论如何,我想要的是 145 美元或 -145 美元。
现在,根据我的研究,可以使用 NumberFormatInfo 类来做到这一点。我不知道如何使用它,也找不到任何有效的例子。我确实在这里看到了这个问题:C# Creating a custom NumberFormatInfo to display "Free" when a currency value is $0.00但是来自这个问题的 MSDN 示例似乎与我真正想做的有点不同。
我意识到,我需要做以下事情:
double dollarValue = -145d;
string myMoney = dollarValue.ToString( "C0", someIFormatProvider );
其中 someIFormatProvider 可能是 NumberFormatInfo 类型。现在,我所做的是:
NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString( "C0", ni );
...我得到一个“实例是只读的”异常。虽然 CurrencyNegativePattern 属性的“文档”说您可以设置和获取值,但显然您不能。此外,NumberFormatInfo 是一个密封类。我不能轻松地基于它创建一个新类并覆盖该值。
我不知道如何处理这个问题。现在,我的解决方法是否定我的负值并获得我string.Format(...)
再次做的积极结果。是的,我意识到这前面没有负号,但是,当然,这很容易通过根据需要在结果前面添加“-”来解决。
有人可以为我提供一个工作示例,说明如何在这种情况下正确有效地使用 NumbefFormatInfo 类吗?谢谢。