我的值范围从1到10000000. 值10000后,我需要显示值为1E6,1E7,1E8,.... 如何在string.Format中设置?C#中的字符串格式
感谢大家的回复。
现在我可以使用格式“0.E0” 显示1E5,1E6,1E7,....但我不想设置“E”从1到10000.
如何解决此问题?
我的值范围从1到10000000. 值10000后,我需要显示值为1E6,1E7,1E8,.... 如何在string.Format中设置?C#中的字符串格式
感谢大家的回复。
现在我可以使用格式“0.E0” 显示1E5,1E6,1E7,....但我不想设置“E”从1到10000.
如何解决此问题?
您可以使用exponent notation,但我认为它可以适用于所有数字,而不仅仅适用于大于10000的数字。您可能需要有一个条件来处理这种情况。
我建议将该值作为浮点数引用。这样你可以使用“NumberStyles.AllowExponent”,这将提供你正在寻找的东西。
string i = "100000000000";
float g = float.Parse(i,System.Globalization.NumberStyles.AllowExponent);
Console.WriteLine(g.ToString());
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"));
像这样的东西应该做的伎俩:
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:为该功能选择一个更好的名称。
可能作为扩展方法更好...... – 2010-08-16 09:17:45
@Dan:它的标记C#2.0,那个版本有扩展方法吗?我认为它们是在3.0中引入的。但是,是的,作为扩展方法会更好。 – ngoozeff 2010-08-16 09:40:11
谢谢,但我只需要显示1E11,但你的代码显示+我不需要的符号 – Guddu 2010-08-16 08:48:20
这是相反的。在这里你从一个字符串解析一个浮点数。当它是一个浮点数时,它没有任何格式化,当然,打印它只是打印数字。 – Kobi 2010-08-16 09:01:37