【问题标题】:Why bigint number not split with c# CultureInfo?为什么 bigint 数字不与 c# CultureInfo 分开?
【发布时间】:2016-06-19 05:06:47
【问题描述】:

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

例如我有这个号码:

12598546


我想以这种格式显示它:

12,598,546


我的 C# 代码:

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


我本地 PC 中的代码运行良好,但是当应用程序在服务器中运行时,数字显示为以下格式:

12598,546


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

【问题讨论】:

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


    【解决方案1】:

    如果您查看此CultureInfo 中的NumberFormat,您将看到下一个:

    var culture = CultureInfo.GetCultureInfo("es-US");
    Console.WriteLine(string.Join(",",culture.NumberFormat.NumberGroupSizes));
    //output: 3,0
    

    什么意思,根据msdn,小数分隔符左边第一组将包含3位数字,其他不分组。

    如果您想通过分组获得所需的值,您应该执行以下操作之一:

    1. 创建特定的文化,基于es-US 并将NumberGroupSizes 设置为[3]。
    2. 使用另一个现有的CultureInfo 和预定义的NumberGroupSizes 和[3] - 例如en-US。
    3. 按照 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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-24
        • 1970-01-01
        • 2020-12-30
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多