Int.ToString("C")删除否定符号

Dav*_*ave 11 .net tostring

根据http://msdn.microsoft.com/en-us/library/6t7dwaa5.aspx,如果我想显示一个数字作为货币,我可以调用.ToString()并传递一个参数,在本例中为"C" "

但是,根据以下来自MSDN站点的详细信息,它会自动删除减号( - )字符,这意味着我的值现在为正值.

int value = -16325;   
// Display value using default ToString method.
Console.WriteLine(value.ToString());            // Displays -16325 
// Display value using some standard format specifiers.
Console.WriteLine(value.ToString("G"));         // Displays -16325
Console.WriteLine(value.ToString("C"));         // Displays ($16,325.00)
Console.WriteLine(value.ToString("D"));         // Displays -16325
Console.WriteLine(value.ToString("F"));         // Displays -16325.00
Console.WriteLine(value.ToString("N"));         // Displays -16,325.00
Console.WriteLine(value.ToString("X"));         // Displays FFFFC03B 
Run Code Online (Sandbox Code Playgroud)

所以,我如何使用减号符号,我必须使用包含(" - ")方法,如果它是真的添加 - 重新开启.

像这个代码的东西(如果编码不正确,请道歉,但你明白了).

string x = (value.ToString().Contains("-") : "-" + value.ToString("C") ?  + value.ToString("C"));
Run Code Online (Sandbox Code Playgroud)

Mar*_*ris 16

这取决于你的价值CurrentCulture.NumberFormat.CurrencyNegativePattern.可能的值为0 - 15:

0 : ($12,345.00)
1 : -$12,345.00
2 : $-12,345.00
3 : $12,345.00-
4 : (12,345.00$)
5 : -12,345.00$
6 : 12,345.00-$
7 : 12,345.00$-
8 : -12,345.00 $
9 : -$ 12,345.00
10 : 12,345.00 $-
11 : $ 12,345.00-
12 : $ -12,345.00
13 : 12,345.00- $
14 : ($ 12,345.00)
15 : (12,345.00 $)
Run Code Online (Sandbox Code Playgroud)

所以看起来你想将它设置1为获得你想要的输出,例如:

int value = -12345;

var numberFormat = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
numberFormat.CurrencyNegativePattern = 1;

string numberAsCurrency = value.ToString("C", numberFormat)
Run Code Online (Sandbox Code Playgroud)

虽然,根据您对远程服务器的评论并且您总是希望以特定方式进行格式化,但最好只将整个线程的文化设置为受控值,这将影响ToString()该线程上的所有后续调用:

int value = -12345;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyNegativePattern = 1;
string numberAsCurrency = value.ToString("C");
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 8

您可以NumberFormatInfo从当前区域设置创建自定义.然后你可以指定它CurrencyNegativePattern,例如:

int value = -16325;
var culture = CultureInfo.CurrentCulture;
var mutableNfi = (NumberFormatInfo)culture.NumberFormat.Clone();
mutableNfi.CurrencyNegativePattern = 1;
Console.WriteLine(value.ToString("C", mutableNfi)); // Displays (-$16,325.00)
Run Code Online (Sandbox Code Playgroud)