C#中的字符串格式化

6
我有一个值范围从1到10000000。 在10000之后的值中,我需要显示为1E6,1E7,1E8等。如何在string.Format中设置?
感谢所有人的回复。 现在我能够使用格式“0.E0”显示1E5,1E6,1E7等。 但是我不想将"E"设为1到10000。 如何解决这个问题?
5个回答

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

注意:给函数取一个更好的名字。


@丹:它标记为C#2.0,这个版本有扩展方法吗?我记得扩展方法是在3.0引入的。但是没错,作为一个扩展方法会更好一些。 - ngoozeff

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

0

我建议将该值参考为浮点数。这样,您可以使用"NumberStyles.AllowExponent",从而提供您所需的精确结果。

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

    Console.WriteLine(g.ToString());

谢谢,但我只需要显示1E11,你的代码显示了“+”符号,而这并不是我所需的。 - Guddu
这是相反的过程。在这里,您从字符串中解析出一个浮点数。当它是一个浮点数时,它没有任何格式,当然,将其打印只会打印数字。 - Kobi


0
String.Format("10^8 = {0:e}", 100000000"); // "e" 将以小写字母形式出现
String.Format("10^8 = {0:E}", 100000000"); // "E" 将以大写字母形式出现
如果您想让它更漂亮,请尝试以下代码:
Console.WriteLine("10^8 = " + 100000000.ToString("0.##E0"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接