数値の記憶と計算

数値の桁揃え

MMGames

桁揃え、出力変換指定子



整数の桁そろえ


これまでも頻繁に使用してきた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桁大きく指定しておきます。


コンピュータ的な表示


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


実数の桁そろえ


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

%全体桁数.小数桁数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にすれば、小数点も表示されません。

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

サイト目次


第0部:プログラム概要編

  1. プログラムとは何か?

2章:プログラムの書き方

  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2

3章:画面への表示

  1. 文字列の表示
  2. 改行文字
  3. 練習問題3

6章:キーボードからの入力

  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6

9章:回数が決まっている繰り返し

  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9

10章:回数がわからない繰り返し

  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10

13章:複数の変数を一括して扱う

  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13

20章:複数のソースファイル

  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20