数値の桁揃え
整数の桁そろえ
これまでも頻繁に使用してきたprintf関数ですが、まだ説明していない機能があります。
printf関数は、表示する文字や数値の桁数を指定できます。
次のプログラムはこれまでのように、桁数の指定などはなく、そのまま表示した例です。
このプログラムの実行結果は次の通りになります。
結果を見てもわかる通り、数字はそのまま表示されており、
他の数字との位置関係がズレてしまっています。
もっと桁数の多い数字をいくつも表示する場合は非常に読みにくくなります。
結果の表示を読みやすくするために、数値の先頭に空白を入れて、数値の末尾で揃えて表示しましょう。
printf関数で、数値の末尾で揃えて表示するには、次のようにします。
出力変換指定子の間に数字を付けると、その桁数になるよう空白をいれて表示します。
次のプログラムは、桁数を5桁に指定して読みやすくした例です。
このプログラムの実行結果は次の通りになります。
結果を見るとわかりますが、桁数に合わせて空白がいれられて読みやすくなっています。
なお、指定した桁数よりも数値の桁数の方が大きい場合には、数値の桁数に合わせます。
したがって、予想される最大の桁数を指定しておけば、必ず桁がそろえられて表示されます。
また、マイナス値を表示すると、-記号も1桁として取り扱われるので、
マイナスの値を表示する可能性がある場合は1桁大きく指定しておきます。
printf関数は、表示する文字や数値の桁数を指定できます。
次のプログラムはこれまでのように、桁数の指定などはなく、そのまま表示した例です。
ソースコード
#include <stdio.h>
int main(void)
{
int a = 10000, b = 500, c = 3;
printf("Aは %d です。\n", a);
printf("Bは %d です。\n", b);
printf("Cは %d です。\n", c);
return 0;
}
このプログラムの実行結果は次の通りになります。
実行結果
Aは 10000 です。
Bは 500 です。
Cは 3 です。
Bは 500 です。
Cは 3 です。
結果を見てもわかる通り、数字はそのまま表示されており、
他の数字との位置関係がズレてしまっています。
もっと桁数の多い数字をいくつも表示する場合は非常に読みにくくなります。
結果の表示を読みやすくするために、数値の先頭に空白を入れて、数値の末尾で揃えて表示しましょう。
printf関数で、数値の末尾で揃えて表示するには、次のようにします。
数値の末尾で揃えて表示
%桁数d
出力変換指定子の間に数字を付けると、その桁数になるよう空白をいれて表示します。
次のプログラムは、桁数を5桁に指定して読みやすくした例です。
ソースコード
#include <stdio.h>
int main(void)
{
int a = 10000, b = 500, c = 3;
printf("Aは %5d です。¥n", a);
printf("Bは %5d です。¥n", b);
printf("Cは %5d です。¥n", c);
return 0;
}
このプログラムの実行結果は次の通りになります。
実行結果
Aは 10000 です。
Bは 500 です。
Cは 3 です。
Bは 500 です。
Cは 3 です。
結果を見るとわかりますが、桁数に合わせて空白がいれられて読みやすくなっています。
なお、指定した桁数よりも数値の桁数の方が大きい場合には、数値の桁数に合わせます。
したがって、予想される最大の桁数を指定しておけば、必ず桁がそろえられて表示されます。
また、マイナス値を表示すると、-記号も1桁として取り扱われるので、
マイナスの値を表示する可能性がある場合は1桁大きく指定しておきます。
コンピュータ的な表示
printf関数では、コンピュータでよく見かける、0を使った表示も可能です。
桁数の前に0を付けると、空白の代わりに0を付けて表示するようになります。
次のプログラムは、先頭に0を付けるように変更した例です。
このプログラムの実行結果は次の通りになります。
なんとなく、コンピュータっぽい表示になっている気がします。
桁数の前に0を付けると、空白の代わりに0を付けて表示するようになります。
次のプログラムは、先頭に0を付けるように変更した例です。
ソースコード
#include <stdio.h>
int main(void)
{
int a = 10000, b = 500, c = 3;
printf("Aは %05d です。\n", a);
printf("Bは %05d です。\n", b);
printf("Cは %05d です。\n", c);
return 0;
}
このプログラムの実行結果は次の通りになります。
実行結果
Aは 10000 です。
Bは 00500 です。
Cは 00003 です。
Bは 00500 です。
Cは 00003 です。
なんとなく、コンピュータっぽい表示になっている気がします。
実数の桁そろえ
実数値の表示では、全体の桁数と共に小数点以下の桁数を指定できます。
ここで注意すべきことは、全体桁数は小数の桁数と小数点を含むことです。
たとえば、%6.2f では、整数部分が3桁、小数点が1桁、小数部分が2桁の6桁と解釈されます。
次のプログラムは、実数値を桁指定で表示する例です。
このプログラムの実行結果は次の通りになります。
下の行は桁数を見やすくするために付けたものです。
全体が6桁、小数点が1桁、小数部分が2桁で表示されていることがわかります。
なお、小数点以下の桁数を0にすれば、小数点も表示されません。
他にもいろいろな指定をできます。
詳しくは 単語と記号 の出力変換指定子を参照してください。
実数値の桁揃え
%全体桁数.小数桁数f
ここで注意すべきことは、全体桁数は小数の桁数と小数点を含むことです。
たとえば、%6.2f では、整数部分が3桁、小数点が1桁、小数部分が2桁の6桁と解釈されます。
次のプログラムは、実数値を桁指定で表示する例です。
ソースコード
#include <stdio.h>
int main(void)
{
double pi = 3.14159;
printf("%6.2f\n",pi);
printf("123456\n");
return 0;
}
このプログラムの実行結果は次の通りになります。
実行結果
3.14
123456
123456
下の行は桁数を見やすくするために付けたものです。
全体が6桁、小数点が1桁、小数部分が2桁で表示されていることがわかります。
なお、小数点以下の桁数を0にすれば、小数点も表示されません。
他にもいろいろな指定をできます。
詳しくは 単語と記号 の出力変換指定子を参照してください。
本サイトについて
苦しんで覚えるC言語(苦C)はC言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。




