我已经写在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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top