【问题标题】:string format in C#C#中的字符串格式
【发布时间】:2010-08-16 08:28:40
【问题描述】:

我的值在 1 到 10000000 之间。 在值 10000 之后,我需要将值显示为 1E6,1E7,1E8,.... 如何在 string.Format 中设置它?

感谢大家的回复。
现在我可以显示 1E5,1E6,1E7,....通过使用格式“0.E0” 但我不想将“E”从 1 设置为 10000。
如何解决这个问题?

【问题讨论】:

    标签: string c#-2.0 format


    【解决方案1】:

    您可以使用exponent notation,但我认为它适用于所有数字,而不仅仅是大于 10000 的数字。您可能需要有一个条件来处理这种情况。

    【讨论】:

      【解决方案2】:

      这样的事情应该可以解决问题:

      void Main()
      {
        Console.WriteLine(NumberToString(9999));
        Console.WriteLine(NumberToString(10000));
        Console.WriteLine(NumberToString(99990));
        Console.WriteLine(NumberToString(100000));
        Console.WriteLine(NumberToString(10000000));
      }
      
      // Define other methods and classes here
      static string NumberToString(int n)
      {
        return (n > 10000) ? n.ToString("E") : n.ToString();
      }
      

      =>

      9999
      10000
      9.999000E+004
      1.000000E+005
      1.000000E+007
      

      nb:为函数选择一个更好的名称。

      【讨论】:

      • @Dan:它的标记为 C#2.0,那个版本有扩展方法吗?我以为它们是在 3.0 中引入的。但是,是的,作为扩展方法会更好。
      【解决方案3】:

      【讨论】:

        【解决方案4】:

        我建议将该值称为浮点数。这样您就可以使用“NumberStyles.AllowExponent”,这将提供您正在寻找的内容。

            string i = "100000000000";
            float g = float.Parse(i,System.Globalization.NumberStyles.AllowExponent);
        
            Console.WriteLine(g.ToString());
        

        【讨论】:

        • 谢谢,但我只需要显示 1E11,但您的代码显示 + 符号,我不需要
        • 这是相反的。在这里,您从字符串中解析一个浮点数。当然,当它是浮点数时,它没有任何格式,打印它只会打印数字。
        【解决方案5】:
        String.Format("10^8 = {0:e}", 100000000"); //“e”会出现小写 String.Format("10^8 = {0:E}", 100000000"); //“E”会以大写形式出现

        如果你想让它更漂亮,试试这个:

        Console.WriteLine("10^8 = " + 100000000.ToString("0.##E0"));

        【讨论】:

          猜你喜欢
          • 2015-05-08
          • 1970-01-01
          • 1970-01-01
          • 2014-11-02
          • 2020-03-10
          • 2013-07-09
          • 2021-05-09
          • 2016-10-05
          • 1970-01-01
          相关资源
          最近更新 更多