C 中的 E 符号

E notation in C

我正在阅读 C 编程 - 一种现代方法,我偶然发现了关于 E-notation 的部分。我很难理解它们。

取下面的代码:

printf("%12.5e", 30.253);

结果如下:

3.02530e+01

谁能解释一下这是如何工作的?这里的数字 12 表示什么?

printf "%12.5e" 格式指示 printfdouble (或 float)参数转换为指数表示法后的 5 位字符串. 一共至少12个字符。在您的示例中,输出实际上在数字前包含一个额外的 space:3.02530e+01 以构成总共 12 个字符。为了更明显,你可以试试:

printf("|%12.5e|\n", 30.253);

并验证输出是:

| 3.02530e+01|

printf() 产生的指数表示法总是在 . 之前使用一个数字和一个指数(此处为 e+01)表示要乘以的 10 的幂号码。是科学界常用的表示法:

30.12 is the same as 3.012e1 or 3.012e+01
0.0012 is the same as 1.2e-3

您可以使用此语法在 C 源代码中编写浮点常量。

"%12.5e" 表示:

(格式为%[flag][minimumFieldWidth][.precision]conversionSpecifier)

  • 12: [minimumFieldWidth] 结果应占用 12 个字符(默认右对齐)
  • .5:[.precision] 结果应该有 5 个小数位
  • e: [conversionSpecifier] 结果将采用指数表示法

您可以尝试使用该值并亲眼看看输出如何变化。

参见:http://en.wikipedia.org/wiki/Printf_format_string