如何在不包含指数表示法的情况下获得浮点值

在C#中,是否可以在float上执行ToString并获取值而不使用指数?

例如,请考虑以下事项:

float dummy; dummy = 0.000006F; Console.WriteLine(dummy.ToString()); 

这给出了输出

 6E-06 

但是,我的意思是

 0.000006 

我能找到的最接近的是使用“F”限定符,但是我需要指定小数位数,否则值将被舍入。

实际上是否有一种自动执行此操作的方法,或者我需要加载一些时髦的逻辑来修剪零或计算出所需的小数位数。

谢谢;
理查德莫斯

试试这个

 Console.WriteLine(dummy.ToString("F")); 

您还可以指定小数位数。 例如F5,F3等

此外,您可以检查自定义格式说明符

 Console.WriteLine(dummy.ToString("0.#########")); 
 string dum = string.Format("{0:f99}",dummy).TrimEnd('0'); if (dum.EndsWith(",")) dum = dum.Remove(dum.Length - 1); 

没有一些进一步的背景信息,很难说 – 但听起来你想要十进制语义。 那么为什么不使用decimal类型呢?

 decimal dummy; dummy = 0.000006M; 

十进制类型在表示十进制数时比floatdouble精度更准确,但它不是高效的。 有关详细信息,请参见此处

 Console.WriteLine(dummy.ToString("N5")); 

其中5位小数位数

 float dummy = 0.000006F; Console.WriteLine(dummy.ToString("0." + new string('#', 60))); 

如果你要做很多事情,那么将格式字符串存储在static字段/属性中并重新使用它是有意义的,而不是每次构造一个新string

 private static readonly string _allFloatDigits = "0." + new string('#', 60); // ... float dummy = 0.000006F; Console.WriteLine(dummy.ToString(_allFloatDigits));