Cプログラミング入門

第12回 Chapter 4 計算してみよう(4)

この記事を読むのに必要な時間:およそ 1 分

実数はfloat/doubleで

int型では,1.2とか-3.5とかのような小数の値を扱うことができません。小数の値を扱うには,int型の代わりに浮動小数点型を用います。浮動小数点型には,次のようにfloatdoubleの2つの型があります。

float単精度浮動小数点型
double倍精度浮動小数点型

floatとdoubleとは,扱える値の精度や使用するメモリのバイト数が違うだけで,プログラム上はどちらもほぼ同様に扱うことができます。

たとえば,double型の変数dを宣言するには,

  double d;

と書きます。

浮動小数点型の変数の値をprintf()で表示するには,書式指定文字列として,

  %f

を使います。double型の変数dの値をprintf()で表示するには,

  printf("%f\n", d);

と書きます。%fという書式指定の場合,実際に表示されるのは小数点以下6桁までです。表示する値の小数点以下の桁数を変更したい場合は,%f%fの間に . と桁数を表す数字を入れます。たとえば,

  printf("%.12f\n", d);

と書くと,小数点以下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よりも右側に付けなければならないので注意してください。

著者プロフィール

山森丈範(やまもりたけのり)

「C言語はアセンブラを触っているうちに自然に覚えてしまった」というプログラマ。C言語とのかかわり上,OSは専らUNIXを使用。C言語のプログラムでは,いつもLinux/FreeBSD/Solarisすべてで動くことを気に留めている。C言語と同様に移植性の高いシェルスクリプトにも思い入れが深く,著書に『シェルスクリプト基本リファレンス』がある。

著書

コメント

コメントの記入