为什么bigint数字不能与c#CultureInfo分开?

时间:2016-06-19 05:06:47

标签: c# asp.net string string-formatting cultureinfo

我是C#的初学者,我在SQL服务器上有一个货币字段,该字段的数据类型为bigint

例如我有这个号码:

12598546


我想用这种格式表示:

12,598,546


我的C#代码:

query_statusOfRPTOST[i].price_year.ToString("N0", CultureInfo.CreateSpecificCulture("es-US"))


我的本地PC中的代码工作正常,但当应用程序在服务器中运行时,编号显示如下:

12598,546


发生了什么?我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:1)

您可以像这样使用string.Format:

string.Format("{0:#,###0}", query_statusOfRPTOST[i].price_year)

答案 1 :(得分:1)

如果您查看此NumberFormat的{​​{1}},您会看到下一个:

CultureInfo

根据msdn,小数点分隔符左侧第一组将包含3位数,而其他组不会被分组,这意味着什么。

如果您希望获得以灌浆形式呈现的所需值,您应该执行以下操作之一:

  1. 根据var culture = CultureInfo.GetCultureInfo("es-US"); Console.WriteLine(string.Join(",",culture.NumberFormat.NumberGroupSizes)); //output: 3,0 创建特定文化,并将es-US设置为NumberGroupSizes
  2. 使用预定义[3]CultureInfo的其他现有NumberGroupSizes - 例如[3]
  3. 使用特殊格式,如Ali建议
  4. 第一个代码示例:

    en-US

    第二个代码示例:

    long a = 12598546;
    var culture = CultureInfo.CreateSpecificCulture("es-US");
    culture.NumberFormat.NumberGroupSizes = new int[] { 3 };
    Console.WriteLine(a.ToString("N0", culture));
    // output 12,598,546