苦しんで覚えるC言語

数値の桁揃え


第1項:整数の桁そろえ

これまでも頻繁に使用してきたprintf関数ですが、まだ説明していない機能があります。
printf関数は、表示する文字や数値の桁数を指定することができます。

次のプログラムはこれまでのように、桁数は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 です。
結果を見てもわかる通り、数字はそのまま表示されており、
他の数字との位置関係がズレてしまっています。
もっと桁数の多い数字をいくつも表示する場合は非常に読みにくくなります。

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 です。
結果を見るとわかりますが、桁数に合わせて空白がいれられて読みやすくなっています。
なお、指定した桁数よりも数値の桁数の方が大きい場合には、数値の桁数に合わせます。

従って、予想される最大の桁数を指定しておけば、必ず桁がそろえられて表示されます。
また、マイナス値を表示すると、-記号も1桁として取り扱われるので、
マイナスの値を表示する可能性がある場合は1桁大きく指定しておきます。

目次に戻る

第2項:コンピュータ的な表示

printf関数では、コンピュータでよく見かける、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 です。
なんとなく、コンピュータっぽい表示になっている気がします。

目次に戻る

第3項:実数の桁そろえ

実数値の表示では、全体の桁数と共に小数点以下の桁数を指定できます。

%全体桁数.小数桁数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
下の行は桁数を見やすくするために付けたものです。
全体が6桁、小数点が1桁、小数部分が2桁で表示されていることがわかります。
なお、小数点以下の桁数を0にすれば、小数点も表示されません。

他にもいろいろな指定をすることができます。
詳しくは 単語と記号 の出力変換指定子を参照してください。

目次に戻る