浮点数到字符串:什么是指数部分?
-
06-09-2019 - |
题
我已经写在C小函数,它几乎完成同样的工作作为非标准功能`fcvt”。正如你可能知道,这个功能需要一个浮点/双精度,使一个字符串,代表ANSI字符这个数字。一切正常; - )
例如,对于数1.33334,我的功能给我字符串:“133334”,并设置了专门的整数变量`decimal_part”,在该例子将是1,这意味着在小数部分仅1个符号,其他一切是分数
现在我很好奇怎么做非标准C函数`printf的”。它可以采取一个%或%E的格式字符串。让我举的%E(链接junked):
“双重”的说法是在科学记数法输出
[ - ] m.nnnnnne + XX
...的指数总是包含两个数字。
它表示:“指数总是包含两个数字”。但是,什么是指数?这是最主要的问题。而且,如何从上面或从'fcvt”我的功能得到这个“指数”。
解决方案
在符号可能是更好的解释,如果我们扩大了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浮点
其他提示
的指数在功率10被升高到随后由基相乘。
SI在wikipeida说明。 http://en.wikipedia.org/wiki/Scientific_notation
m.nnnnnne+xx
是逻辑上等于m.nnnnnn * 10 ^ +xx
在科学记数法,指数是10至XX功率,所以1234.5678可以表示为1.2345678E03其中归一化的形式是由10 ^ 3相乘得到“真实”的答案。
400 = 4 * 10 ^ 2
2是指数。
如果你写在科学记数法的数,则指数是表示法的一部分。
您可以看到一个完整的描述在这里 http://en.wikipedia.org/wiki/Scientific_notation ,但基本上它只是写一个数的另一种方法,通常用于非常大的或非常小的数字。
假设你有数量300,也就是等于3×100或3×10 ^科学记数法2
如果您使用%E将被打印为3.0E + 02