我想了解为什么零填充对于 printf 中的 %g 和 %f 格式的工作方式不同。这是一个示例程序:
#include <stdio.h>
int main()
{
double d = 0.10000000000001;
printf("%04.2f\n", d);
printf("%04.2g\n", d);
return 0;
}
它输出
0.10
00.1
这在 Windows 上的 VC++ 和 Linux 上的 gcc 中都可以重现。
为什么它会这样工作?这是正确的行为吗?
更新:我找到了答案,但我想我会留下这个问题......