C# 具有有限字符数的Double.ToString()
假设我有一些双打:C# 具有有限字符数的Double.ToString(),c#,C#,假设我有一些双打: 12 10145 -0.00000000001455744121548787 100122455471000245487.05 我希望能够将它们转换为最多9个字符的字符串。输出类似于: 12 10145 -1.45e-11 1.0012e21 有没有一个简单的方法可以做到这一点 对于前两个数字,我不希望输出为: 1.2e1 1.0145e4看起来您想使用String.Format进行格式化 您首先需要检查是否需要使用科学记数法(即,如果数字大于10^7,介于-10^-7和
12
10145
-0.00000000001455744121548787
100122455471000245487.05
我希望能够将它们转换为最多9个字符的字符串。输出类似于:
12
10145
-1.45e-11
1.0012e21
有没有一个简单的方法可以做到这一点
对于前两个数字,我不希望输出为:
1.2e1
1.0145e4看起来您想使用
String.Format
进行格式化
您首先需要检查是否需要使用科学记数法(即,如果数字大于10^7,介于-10^-7和10^-7之间),但以科学记数法打印数字(小数点后最多6位数字)的方式是:
String.Format("0.0######e+###", myDouble);
使用哪种格式的规则是什么?
1.456e-11
的符号不同于-0.0000000000 1455744121548787
教程可能有用,但我不确定它是否处理字符e
您的上两个示例输出各有9个字符。。。我认为您必须自己编写一个函数,该函数可以查看数字的大小,并根据是否需要科学记数法以及小数位数的空间来决定最佳的格式化方式。@Oded:规则是:只要您的双精度适合n个字符,就输出准确的值,否则,请使用科学名称,使其适合n个字符。这不是一个糟糕的检查,您的检查基本上是如果它大于10^7,介于-10^-7和10^7之间,或者小于-10^7,则您可以格式化。