2017-02-26 42 views
0

儘管網絡搜索尚未產生任何效果,但希望能有一個簡單的答案。部隊標誌和本地化的千位分隔符

要格式化與成千上萬的一個數字,你只需使用:

var output = String.Format("{0:n0}", 1000000); 
// Output 1,000,000 or 1.000.000 depending on Culture 

要格式化號碼始終顯示在前面的標誌,你可以使用:

var output = String.Format("{0:+0;-0;+0}", 1); 
// Output +1; 

var output = String.Format("{0:+0;-0;+0}", -1); 
// Output -1; 

那麼,如何格式化帶有符號和千位分隔符的數字?

按道理它應該是這樣,但它不工作:

var output = String.Format("{0:+n0;-n0;+0}", -1000000); 

// Expected output -1,000,000 
// Actual output -n10000000 

有一個格式字符串,允許這一點,尊重當前區域在千位分隔符可以是一個.,

回答

1

您可以用自定義說明符,的區間確定;結合:

例如,如果字符串「#,#」和固定區域性用於格式化數字1000,輸出爲「 1000" 。

var output = String.Format("{0:+#,#;-#,#;0}", 1000000); 
+0

這是否反映當前的語言環境?例如,如果本地化的千位分隔符是'.'而不是'',這是我想要使用'n0'的主要原因。 – CSL

+0

@CS:鏈接頁面狀態:「_當前NumberFormatInfo對象的NumberGroupSeparator和NumberGroupSizes屬性確定用作數字組分隔符的字符以及每個數字組的大小._」我嘗試設置德語區域設置並獲得了'1.000' 。 – AlexD

0

你可以試試這個:

int num = -5000000; 
     Console.WriteLine(num.ToString("N0")); 

編輯:我的道歉!我只專注於負面的象徵。給這個鏡頭:

string format = "+##,#;-##,#"; 
     int num = -5000000; 
     int num2 = 5000000; 
     Console.WriteLine(num.ToString(format)); 
     Console.WriteLine(num2.ToString(format)); 
+0

這適用於負數,但我希望'+'符號顯示爲正數。 – CSL