この記事を読むのに必要な時間:およそ 1 分
実数はfloat/doubleで
int型では,1.2とか-3.5とかのような小数の値を扱うことができません。小数の値を扱うには,int型の代わりに浮動小数点型を用います。浮動小数点型には,次のようにfloatとdoubleの2つの型があります。
float | 単精度浮動小数点型 |
double | 倍精度浮動小数点型 |
floatとdoubleとは,扱える値の精度や使用するメモリのバイト数が違うだけで,プログラム上はどちらもほぼ同様に扱うことができます。
たとえば,double型の変数dを宣言するには,
と書きます。
浮動小数点型の変数の値をprintf()で表示するには,書式指定文字列として,
を使います。double型の変数dの値をprintf()で表示するには,
と書きます。%fという書式指定の場合,実際に表示されるのは小数点以下6桁までです。表示する値の小数点以下の桁数を変更したい場合は,%fの%とfの間に . と桁数を表す数字を入れます。たとえば,
と書くと,小数点以下12桁までが表示されます。
浮動小数点型の計算を行うプログラムの例(pi.c)をリスト4.3に示します。この例では,三角関数のtan()(タンジェント)の逆関数のatan()(逆タンジェント)を使って,円周率(π)の値を求めています。atan(1.0)はπ/4の値となるため,これを4倍すればπの値になります。
リスト4.3 円周率計算プログラム pi.c
#include <stdio.h>
#include <math.h>
int
main()
{
double d;
d = atan(1.0) * 4;
printf("%.10f\n", d);
return 0;
}
pi.cでは,atan()関数を使用するため,新しくmath.hというヘッダファイルをインクルードしています。
なお,atan()の引数の「1.0」は,浮動小数点型の定数値とする必要があるため,「1」ではなく「1.0」と書く必要があります。「1」と書いてしまうと整数型の定数となってしまい,atan()関数が正常に動作しなくなるので注意してください。
pi.cをコンパイルするには,これまでと違ってコマンドラインの右側に -lm というオプションを付ける必要があります(図4.3)。「-lm」は浮動小数点型ライブラリ(libm)とのリンクを指定するためのオプションです。pi.cの中で使用したatan()という関数は,このlibmの中に存在するのです。
図4.3 pi.cのコンパイルと実行例
$ gcc -O2 -o pi pi.c -lm
$ ./pi
3.1415926536
$
なお,「-lm」オプションはライブラリのリンク順の関係で,ソースファイルのpi.cよりも右側に付けなければならないので注意してください。