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 の両方で再現可能です。
なぜこのように機能するのですか?それは正しい行動ですか?
更新:答えは見つかりましたが、質問を開いたままにすると思います...