【发布时间】:2015-04-28 12:10:21
【问题描述】:
我正在阅读 C Programming - A modern approach,我偶然发现了关于 E-notation 的部分。我很难理解它们。
取以下代码:
printf("%12.5e", 30.253);
这导致以下输出:
3.02530e+01
有人能解释一下这是如何工作的吗?数字 12 在这里表示什么?
【问题讨论】:
标签: c scientific-notation
我正在阅读 C Programming - A modern approach,我偶然发现了关于 E-notation 的部分。我很难理解它们。
取以下代码:
printf("%12.5e", 30.253);
这导致以下输出:
3.02530e+01
有人能解释一下这是如何工作的吗?数字 12 在这里表示什么?
【问题讨论】:
标签: c scientific-notation
printf "%12.5e" 格式指示printf 将double(或float)参数转换为以指数表示的字符串,在. 之后有5 个数字,总共至少12 个字符.在您的示例中,输出实际上在数字之前包含一个额外的空格:3.02530e+01 总共有 12 个字符。为了更明显,您可以尝试:
printf("|%12.5e|\n", 30.253);
并验证输出是:
| 3.02530e+01|
printf() 生成的指数表示法总是在. 之前使用一个数字和一个代表10 的幂的指数(此处为e+01)与该数字相乘。这是科学界常用的一种表示法:
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] 结果将采用指数表示法您可以尝试使用该值并亲自查看输出如何变化。
【讨论】: