根据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)
您可以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)