Dot-Net

Int.ToString(‘C’) 刪除負號

  • March 5, 2018

根據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 

那麼,如何使用減號保留它,我是否必須使用 Contains("-") 方法,如果它是真的添加 - 回來。

類似這段程式碼的東西(如果編碼不正確,請道歉,但你明白了)。

string x = (value.ToString().Contains("-") : "-" + value.ToString("C") ?  + value.ToString("C"));

這取決於您的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 $)

所以看起來你想設置它來1獲得你想要的輸出,比如:

int value = -12345;

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

string numberAsCurrency = value.ToString("C", numberFormat)

但是,根據您關於它是遠端伺服器的評論並且您總是希望以特定方式進行格式化,最好將整個執行緒的文化設置為受控值,這將影響ToString()該執行緒上的所有後續呼叫:

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

引用自:https://stackoverflow.com/questions/14137597