C科学符号指数格式

Pet*_*ter 5 c printf

是否可以控制printf的科学记法(e)打印的指数中显示的位数?

这段代码

#include <stdio.h>

int main(void) {
    printf("%6.3e", 403.0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产生(取决于编译器/平台):

4.030e+002(VS2010)或4.030e+02(gcc 4.3.4)或甚至4.030e+2

在比较不同平台上生成的文件时,指数中不同的位数很容易混淆diff工具.

T.C*_*.C. 2

C 标准实际上指定了指数中有多少位(WG14 N1570, \xc2\xa77.21.6.1/p8; N1256, \xc2\xa77.19.6.1/p8):

\n\n
\n

指数始终包含至少两位数字,并且仅包含表示指数所需的更多数字。

\n
\n\n

VS2010 的实现不合格。它们确实提供了一个库函数来更改打印的位数,您可以在#ifdef包装器中使用它。

\n