如何在不包含指数表示法的情况下获得浮点值
在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;
十进制类型在表示十进制数时比float
或double
精度更准确,但它不是高效的。 有关详细信息,请参见此处
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));