我在C中写了一个小函数,它几乎和标准函数`fcvt'做同样的工作。您可能知道,此函数采用float / double并生成一个字符串,以ANSI字符表示此数字。一切正常; - )
例如,对于数字1.33334,我的函数给我字符串:“133334”并设置特殊的整数变量`decimal_part',在这个例子中将是1,这意味着在小数部分只有1个符号,其他一切都是分数
现在我很好奇做什么做标准的C函数`printf'。它可以将%a或%e作为格式字符串。让我引用%e(link junked):
“double”参数以科学记数法输出
[ - ] m.nnnnnne + XX
...指数总是包含两位数。
它说:“指数总是包含两位数”。但什么是指数?这是主要问题。而且,如何从我上面的函数或`fcvt'获得这个'指数'。
答案 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