2016-11-04 203 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财产。