【问题标题】:how to format 1700 to 1'700 and 1000000 to 1'000'000 in c#?如何在 c# 中将 1700 格式化为 1'700 和 1000000 格式化为 1'000'000?
【发布时间】:2010-01-20 19:08:38
【问题描述】:

我喜欢像数学一样格式化所有数字。是否有预定义的函数,或者是否可以使用子字符串和替换?

编辑:我的文化是去ch

最好的问候

【问题讨论】:

  • 那是哪种语言/文化?
  • 对于 1000000 为什么会有两个不同的组分隔符?出于兴趣,你在哪个国家?我从未见过用于组分隔符的撇号(向后或向前)——根据我的经验,它通常是逗号、空格或点。
  • 我没有两个……这是个错误……我很抱歉
  • @JonSkeet 它以两种不同的方式自动转换撇号;似乎没有办法阻止它。
  • @Jon Skeet:例如,在瑞士,撇号用作组分隔符。

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


【解决方案1】:

试试这个

int input = Convert.ToInt32("1700");
string result = String.Format("{0:##,##}", input);

或者这个

Console.WriteLine(1700.ToString("##,##", new NumberFormatInfo() { NumberGroupSeparator = "'" })); 

【讨论】:

    【解决方案2】:
    var numformat = new NumberFormatInfo {
                       NumberGroupSeparator = "'",
                       NumberGroupSizes = new int[] { 3 },
                       NumberDecimalSeparator = "."
                    };
    Console.WriteLine(1000000.ToString("N",numformat));
    

    【讨论】:

      【解决方案3】:

      试试这个:

      Console.WriteLine(1000000.ToString("#,##0").Replace(
          CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator, "'"));
      

      或者

      NumberFormatInfo likeInMath = new NumberFormatInfo()
      {
          NumberGroupSeparator = "'"
      };
      Console.WriteLine(1000000.ToString("#,##0", likeInMath));
      

      【讨论】:

      • 这在我的机器上不起作用。它打印1 000 000。我的文化是 nb-NO
      • @Svish,刚刚解决了这个问题,看看
      【解决方案4】:

      使用int.ToString()iFormatProvider

      也看看这里msdn.

      【讨论】:

        【解决方案5】:

        我总是使用这种格式

         "#,##0;#,##0'-';0"
        

        所以你可以在

        中使用它
         int input = Convert.ToInt32("100000000");  
         string result = String.Format("{#,##0;#,##0'-';0}", input);
        

        【讨论】:

          猜你喜欢
          • 2012-09-06
          • 1970-01-01
          • 2017-01-14
          • 1970-01-01
          • 1970-01-01
          • 2019-07-01
          • 2010-12-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多