为什么不使用c#CultureInfo拆分bigint数字?

为什么不使用c#CultureInfo拆分bigint数字?,c#,asp.net,string,string-formatting,cultureinfo,C#,Asp.net,String,String Formatting,Cultureinfo,我是C#的初学者,在SQL server中有一个currency字段,该字段的数据类型是bigint 例如,我有一个号码: 12598546 我想以这种格式显示它: 12,598,546 12598,546 我的C#代码: query_statusOfRPTOST[i].price_year.ToString("N0", CultureInfo.CreateSpecificCulture("es-US")) 该代码在我的本地PC上运行正常,但当应用程序在服务器上运行时,该代码以以下

我是C#的初学者,在SQL server中有一个currency字段,该字段的数据类型是
bigint

例如,我有一个号码:

12598546

我想以这种格式显示它:

12,598,546
12598,546

我的C#代码:

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

该代码在我的本地PC上运行正常,但当应用程序在服务器上运行时,该代码以以下格式显示:

12,598,546
12598,546


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

您可以使用字符串。格式如下:

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

如果查看此
CultureInfo
NumberFormat
,您将看到下一步:

var culture = CultureInfo.GetCultureInfo("es-US");
Console.WriteLine(string.Join(",",culture.NumberFormat.NumberGroupSizes));
//output: 3,0
这意味着,根据小数点分隔符左侧的内容,第一组将包含3位数字,而另一组将不分组

如果希望通过groupping以格式显示所需的值,应执行以下操作之一:

  • 基于
    es US
    创建特定区域性,并将
    numbergroupsize
    设置为
    [3]
  • 将另一个现有的
    CultureInfo
    与预定义的
    numbergroupsize
    一起使用
    [3]
    ——例如,
    en-US
  • 按照Ali的建议,使用特殊格式
  • 第一个示例的代码:

    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
    
    第二个示例的代码:

    long a = 12598546;
    Console.WriteLine(a.ToString("N0", CultureInfo.GetCultureInfo("en-US")));
    // output 12,598,546