2010-08-16 52 views
6

我的值范围从1到10000000. 值10000后,我需要显示值为1E6,1E7,1E8,.... 如何在string.Format中设置?C#中的字符串格式

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

回答

2

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

0

我建议将该值作为浮点数引用。这样你可以使用“NumberStyles.AllowExponent”,这将提供你正在寻找的东西。

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

    Console.WriteLine(g.ToString()); 
+0

谢谢,但我只需要显示1E11,但你的代码显示+我不需要的符号 – Guddu 2010-08-16 08:48:20

+0

这是相反的。在这里你从一个字符串解析一个浮点数。当它是一个浮点数时,它没有任何格式化,当然,打印它只是打印数字。 – Kobi 2010-08-16 09:01:37

0
 
String.Format("10^8 = {0:e}", 100000000"); //The "e" will appear lowercase 
String.Format("10^8 = {0:E}", 100000000"); //The "E" will appear in uppercase 

如果你希望它是更漂亮,试试这个:

 
Console.WriteLine("10^8 = " + 100000000.ToString("0.##E0")); 
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:为该功能选择一个更好的名称。

+0

可能作为扩展方法更好...... – 2010-08-16 09:17:45

+0

@Dan:它的标记C#2.0,那个版本有扩展方法吗?我认为它们是在3.0中引入的。但是,是的,作为扩展方法会更好。 – ngoozeff 2010-08-16 09:40:11