3.printfを使いこなそう

3-4. 汎用的な変換指定子

◆汎用的な変換指定子

◇%g

その変換指定子は%gです。例として以下にプログラムを示します。

#include<stdio.h>

main()
{
    printf("%g\n",123.456);
    printf("%g\n",0.00001);
    printf("%g\n",12345.67890);
    printf("%g\n",10.000);

}

結果:
123.456
1e-005
1.23457e+006
10

1番目の結果は%fと同じような表示になりました。
2番目は数値が十分小さいため%eと同じ指数表示になりました。
3番目は整数部小数部ともに桁が多いため指数表示になりました。
4番目は小数部が0のため表示は整数になりました。

ここで気をつけなければならないのは整数表示できるからといって最初から整数型の変数に%gを使用すると誤った値を返しますのであくまで実数型で使用してください。

◇%G

%GについてもeがEに変わる点以外はまったく同じです。

#include<stdio.h>

main()
{
    printf("%G\n",123.456);
    printf("%G\n",0.00001);
    printf("%G\n",12345.67890);
    printf("%G\n",10.000);

}

結果:
123.456
1E-005
1.23457E+006
10

となります。注意点についても同様です。