当我将其转换为字符串时,为什么我的浮点值具有“E”字符?

时间:2015-04-25 23:29:19

标签: c# .net winforms floating-point-conversion string-conversion

txtDebugLog.Invoke(new MethodInvoker(delegate()
{
    fps.Frame();
    ggg = fps.GetFPS();
    txtDebugLog.Text = String.Format("{0}\r\n{1}", ggg, txtDebugLog.Text);
})

txtDebugLog是一个TextBox。

使用断点我在本例中的ggg上看到它的值是:

0.00000102593151

然后我点击继续并查看TextBox

1.025932E-06

2 个答案:

答案 0 :(得分:2)

来自the sub-section "E notation" of the Wikipedia article on "scientific notation"

  

大多数计算器和许多计算机程序在科学记数法中呈现非常大且非常小的结果,通常由标记为EXP(用于指数),EEX(用于输入指数),EE,EX或E的键调用,具体取决于供应商和型号。因为像10 7 这样的上标指数不能总是方便地显示,所以字母E或e通常用于表示提升到幂的十倍(将写成“×10 b < / sup>“)并且后跟指数的值;换句话说,对于任何两个实数a和b,“aEb”的使用将表示a×10 b 的值。注意,在这种用法中,字符e与数学常数e或指数函数e x 无关(与大写字母E不太相关的混淆);虽然它代表指数,但符号通常被称为(科学)E符号或(科学)符号,而不是(科学)指数符号(尽管后者也会出现)。

答案 1 :(得分:2)

您的浮点值ggg的值非常小。当您将其转换为字符串时,如此调用中所发生的那样

String.Format("{0}\r\n{1}", ggg, txtDebugLog.Text); 

它将转换为使用指数格式表示该值的字符串。您可以阅读指数格式的内容,也称为科学记数法,here

如果您想使用其他格式,则必须自己指定。有许多标准格式可供使用,您可以在进行转换时明确指定。使用特定格式将double转换为string可以通过调用 double.ToString(format) 方法完成。

有几种标准格式可供选择并在此处列出,包括您将从中获得的输出。

如果您未指定,则使用的默认格式为General Format Specifier ("G"),其中:

  

将数字转换为定点或最紧凑   科学记数法,取决于数字的类型和是否   精度说明符存在。精度说明符定义了   结果中可以出现的最大有效位数   字符串。