如何在c#中获取特定的文化数字模式

时间:2016-11-04 07:05:10

标签: c# asp.net

我试图在千元之前显示逗号: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;

我出错的地方我无法找到请帮助我

更新

根据 @Ukkant Dubey 建议我尝试通过静态值时代码低于

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);

4 个答案:

答案 0 :(得分:2)

这可能会解决您的问题

s.ToString("N0");

enter image description here

您需要将s变量设置为int类型或某些数字数据类型而不是字符串。

答案 1 :(得分:1)

如果s是一个数字> 1000,这不正常吗?

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

输出:"12,345"

答案 2 :(得分: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);

答案 3 :(得分:1)

试一试,

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

这对我有用,如果你想要显示十进制数字 - 你也可以使用NumberDecimalDigits属性指定。