2016-11-04 122 views
1

我想以後一千EX顯示逗號在C#中特定的文化號碼模式:1000,但它不工作我的代碼如下如何獲得

string.Format("{0:#,###0.#}", s.ToString()); 

我已經嘗試了很多類型作爲一些參考和建議該代碼是下面

string.Format(new System.Globalization.CultureInfo("en-US"), "{0:N}", s.ToString()); 

在回發方法我已經寫下面代碼

CultureInfo en = new CultureInfo("en-US"); 
Thread.CurrentThread.CurrentCulture = en; 

其中我錯了,我沒能找到,請幫我

UPDATE:

@Umakant杜貝建議我嘗試它工作時,我們通過靜態值的代碼如下

var amount = 44690.7500; 
      var cultureInfo = CultureInfo.GetCultureInfo("en-US"); 
      var formattedAmount = String.Format(cultureInfo, "{0:C}", amount); 

上面的代碼工作,但是當改變代碼意味着如果我通過動態值,它不會工作,即低於

var amount = dts.Rows[0][16]; 
      var cultureInfo = CultureInfo.GetCultureInfo("en-US"); 
      var formattedAmount = String.Format(cultureInfo, "{0:C}", amount); 
+2

這是什麼?請顯示[mcve]。請注意,將* string *作爲參數傳遞給'string.Format'不會幫助您將's'格式化爲數字...(我還建議您移除ASP.NET標記,因爲這沒有任何我會鼓勵你編寫一個控制檯應用程序作爲你的例子。) –

回答

2

這可能會幫助您解決問題

s.ToString("N0"); 

enter image description here

你需要你的s變量是int類型或某些數字數據類型,而不是字符串。

+0

我也試過,也是....它顯示錯誤 –

+1

什麼是錯誤消息 –

+0

最好的重載方法匹配string.tostring(系統。|格式提供者)有一些無效的參數 –

1

如果s是一個大於1000的數字,這不正確嗎?

var s = 12345; 
string.Format(System.Globalization.CultureInfo.GetCultureInfo("en-US"), 
    "{0:#,###0.#}", s) 

此輸出:"12,345"

1

有這樣做的多種方式。

string str = String.Format("{0:n}", 1234); 
string strWithoutDecimal = string.Format("{0:n0}", 1234); 
string str3 = 1234.ToString("N0"); 
string str4 = 1234.ToString("#,##0"); 
string strCultureSpecific = (1234).ToString("N",new CultureInfo("en-US")); 
string strNoCulture = string.Format(CultureInfo.InvariantCulture, "{0:N0}", 1234); 
1

給一個嘗試,

NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat; 
    nfi.NumberDecimalDigits = 0; 
    int myMoney = 1234; 
    Console.WriteLine(myMoney.ToString("N", nfi)); 

這個工作對我來說,如果你想顯示小數digits-你也可以指定使用NumberDecimalDigits財產。