C中的E表示法

use*_*468 5 c scientific-notation

我正在阅读C编程 - 一种现代的方法,我偶然发现了关于电子符号的部分.我很难理解它们.

请使用以下代码:

printf("%12.5e", 30.253);
Run Code Online (Sandbox Code Playgroud)

这导致以下输出:

3.02530e+01
Run Code Online (Sandbox Code Playgroud)

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

chq*_*lie 10

printf "%12.5e"格式指示printf到转换double(或float)参数的字符串采用指数表示法与后5位.和总共至少12个字符的.在您的示例中,输出实际上在数字前面包含一个额外的空格:3.02530e+01以生成总数12字符.为了使它更明显,你可以尝试:

printf("|%12.5e|\n", 30.253);
Run Code Online (Sandbox Code Playgroud)

并验证输出是:

| 3.02530e+01|
Run Code Online (Sandbox Code Playgroud)

由指数表示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
Run Code Online (Sandbox Code Playgroud)

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