【问题标题】:Adding comma between longer numbers [duplicate]在较长的数字之间添加逗号[重复]
【发布时间】:2013-06-01 05:13:55
【问题描述】:

我正在尝试自动将逗号放在长数字之间,但到目前为止没有成功。我可能犯了一个非常简单的错误,但到目前为止我无法弄清楚。这是我目前拥有的代码,但由于某种原因,我得到了 123456789 作为输出。

    string s = "123456789";
    string.Format("{0:#,###0}", s);
    MessageBox.Show(s); // Needs to output 123,456,789

【问题讨论】:

  • 您缺少{,但也可以将N 用于一般数字格式。此外,您的输入是字符串,而不是数字。
  • 如果您查看格式字符串中的每个字符,您能告诉我每个字符的作用吗?
  • 我认为你需要先添加一个大括号。
  • 我不知道发生了什么,但删除括号不是解决方案。
  • 它已经发布了,这里有几个linkshere 我相信它会有所帮助

标签: c#


【解决方案1】:
var input = 123456789;

// these two lines amount to the same thing
Console.WriteLine(input.ToString("N0"));
Console.WriteLine(string.Format("{0:N0}", input));

如果根据您的问题,您需要以string 开头:

var stringInput = "123456789";
var input = int.Parse(stringInput);

// these two lines amount to the same thing
Console.WriteLine(input.ToString("N0"));
Console.WriteLine(string.Format("{0:N0}", input));

在解析/格式化时,您可能还需要考虑文化。查看采用IFormatProvider 的重载。

【讨论】:

    【解决方案2】:

    试试这个:

    string value = string.Format("{0:#,###0}", 123456789);
    

    在您的代码中,您缺少格式字符串中的初始 {,然后数字格式选项适用于数字,而您的 s 是一个字符串。
    您可以使用int.Parse 将字符串转换为数字:

    int s = int.Parse("123456789");
    string value = string.Format("{0:#,###0}", 123456789);
    MessageBox.Show(value); 
    

    【讨论】:

      【解决方案3】:

      这应该可行(您需要传递 String.Format() 一个数字,而不是另一个 String):

      Int32 i = 123456789;
      String s = String.Format("{0:#,###0}", i);
      MessageBox.Show(s);
      

      但请考虑您正在使用的格式字符串...正如其他人所建议的那样,有更简洁的选项可用。

      【讨论】:

      • 这行得通。输入总是一个字符串,因为它需要从外部源加载。我将其转换为 Int32,使用您的代码,然后将其转换回字符串。这行得通。我会尽量让它更干净,但仍然非常感谢您的帮助!
      【解决方案4】:

      查看 MSDN 上的数字格式信息:Standard Numeric Format Strings,或可选地查看自定义格式字符串:Custom Numeric Format Strings

      对于自定义数字格式:

      “,”字符既用作组分隔符又用作数字缩放说明符。

      double value = 1234567890;
      Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
      // Displays 1,234,567,890      
      Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
      // Displays 1,235   
      

      【讨论】:

        【解决方案5】:

        你的代码有很多错误,很难描述每一个细节。

        看这个例子:

        namespace ConsoleApplication1
        {
          using System;
        
          public class Program
          {
            public static void Main()
            {
              const int Number = 123456789;
              var formatted = string.Format("{0:#,###0}", Number);
        
              Console.WriteLine(formatted);
              Console.ReadLine();
            }
          }
        }
        

        【讨论】:

          猜你喜欢
          • 2019-10-16
          • 2020-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-12
          相关资源
          最近更新 更多