Float to String:什么是Exponent部分?

时间:2009-05-28 13:42:11

标签: string math floating-point exponent

我在C中写了一个小函数,它几乎和标准函数`fcvt'做同样的工作。您可能知道,此函数采用float / double并生成一个字符串,以ANSI字符表示此数字。一切正常; - )

例如,对于数字1.33334,我的函数给我字符串:“133334”并设置特殊的整数变量`decimal_part',在这个例子中将是1,这意味着在小数部分只有1个符号,其他一切都是分数

现在我很好奇做什么做标准的C函数`printf'。它可以将%a或%e作为格式字符串。让我引用%e(link junked):

  
    

“double”参数以科学记数法输出

         

[ - ] m.nnnnnne + XX

         

...指数总是包含两位数。

  

它说:“指数总是包含两位数”。但什么是指数?这是主要问题。而且,如何从我上面的函数或`fcvt'获得这个'指数'。

5 个答案:

答案 0 :(得分:2)

如果我们扩展e:

,可能会更好地解释符号
[-]m.nnnnnn * (10^xx)

所以你有一个m的数字(从0到9,但如果整个值为0则它只会是0),以及n的几个数字。我想最好用例子来表示:

1 = 1.0000 * 10^0 = 1e0
10 = 1.0000 * 10^1 = 1e1
10000 = 1.0000 * 10^4 = 1e4
0.1 = 1.0000 * 10^-1 = 1e-1

1,419 = 1.419 * 10^3 = 1.419e3
0.00000123 = 1.23 * 10^-5 = 1.23e-5

你可以在谷歌上查找科学记数法,但它对于表达非常大或小的数字很有用,例如1232100000000000000将是1.2321e24(我实际上并没有计算,指数可能不准确)。

在C中,我认为你实际上可以从前12位中提取指数(第一位是你必须忽略的符号)。请参阅:IEEE758-1985 Floating Point

答案 1 :(得分:0)

指数是将10的幂提高到乘以基数。

SI在wikipeida解释。 http://en.wikipedia.org/wiki/Scientific_notation

m.nnnnnne+xx在逻辑上等于m.nnnnnn * 10 ^ +xx

答案 2 :(得分:0)

400 = 4 * 10 ^ 2

2是指数。

答案 3 :(得分:0)

在科学记数法中,指数是10到XX的幂,因此1234.5678可以表示为1.2345678E03,其中规范化形式乘以10 ^ 3以得到“真实”答案。

答案 4 :(得分:0)

如果你用科学记数法写一个数字,那么指数就是那个符号的一部分。

您可以在此处查看完整说明http://en.wikipedia.org/wiki/Scientific_notation,但基本上它只是另一种编写数字的方式,通常用于非常大或非常小的数字。

假设您的数字为300,即等于3 * 100或3 * 10 ^ 2的科学记数法。

如果您使用%e,它将打印为3.0e + 02