【C言語入門】浮動小数点数型(float / double)の使い方

  • 2026.02.05
       
【C言語入門】浮動小数点数型(float / double)の使い方

プログラミングで数値を扱う時に、必ずしもその値が整数であるとは限りません。
C言語には、実数を扱うための様々なデータ型が用意されていますが、その中でも小数を扱う際に使用する浮動小数点数型(float型 / double型)というものが存在します。

今回の記事では、C言語で浮動小数点数型を使用する方法について解説していきたいと思います。
浮動小数点数型とは何か?といった点から、使用時の基本構文や注意点についてなど、詳しく説明していきたいと思いますので、ぜひ参考にしてみてください。

C言語の浮動小数点数型とは?

浮動小数点数型とは、数値を扱うデータ型のうち、小数に対応するために用意されているデータ型のことを言います。

浮動小数点数型は主に、float型(単精度)と double型(倍精度)の2つがあります。
(ただし、対応するコンパイラによっては long double型も存在します)

浮動小数点数の単精度と倍精度の違い

float型(単精度)と double型(倍精度)では、それぞれに割り当てられるデータサイズが異なるため、扱える桁数に違いがあります。
float型は32ビット(4バイト)で約7桁、double型は64ビット(8バイト)で約16桁の小数が表現可能です。

浮動小数点数型は、マイナス符号( – )や小数点を示すドット( . ) をコンピュータが理解可能な2進数で表すために、符号部・指数分・仮数部の3つに分けて情報を表します。
小数は 「 仮数 × 2の基数乗 」の計算式で表現され、符号部には符号を表す数 (0がプラス、1がマイナス)、指数部と仮数部にはそれぞれ計算式の対応する部分を表す数が入ります。

それぞれの情報に割り当てられるビット数は以下の通りです。

  • float … 1ビット、8ビット、23ビット
  • double … 1ビット、11ビット、52ビット

扱えるサイズの違いにより、float型よりも double型の方が精度が高いため、一般的には double型を使用する方がより良いとされています。
かつては、float型の方が容量が小さい代わりに高速処理を得意とするメリットがありましたが、近年では double型を使うことを前提とする設計がされているケースも多く、double型でも同等以上の速度で処理できるようになっています。

floatの使い方

それでは早速、浮動小数点数型の使い方について見ていきましょう。
まずは、float型から解説していきます。

変数宣言時の基本構文

float型の変数を宣言する際は、以下のように記述します。

C
float 変数名 = 数値 f;

C言語では、小数はデフォルトで double型として扱われるため、float型であることを明示するために数値の末尾に f を付属します。
また、代入する値は指数表記でも記述可能です。

C
float x = 1.2345E+1;

以下のサンプルコードで、実際の動きを見てみましょう。

C
#include <stdio.h>
#include <float.h>

int main() {

    float num = 12.345;

    // float型の変換指定子はf
    printf("numの値: %f\n", num);

    // float型の指数表記の変換指定子はe
    printf("numの指数表記: %e\n", num);

    float f_min = FLT_MIN; // float型の最小値
    float f_max = FLT_MAX; // float型の最大値
 
    printf("float型の最小値: %e\n", f_min);
    printf("float型の最大値: %e\n", f_max);

    return 0;
}
実行結果
numの値: 12.345000
numの指数表記: 1.234500e+01
float型の最小値: 1.175494e-38
float型の最大値: 3.402823e+38

printf関数などで float型の変数を文字列に代入する際は、変換指定子の 「f」 を使用します。
数値の表記を指数表示で出力したい場合には、変換指定子の 「e」 を使用することで表示可能です。

float型の最小値と最大値は環境によって異なる可能性があるため、float.hで定義されているマクロを使用して調べるようにしましょう。
FLT_MINで最小値、FLT_MAXで最大値を取得することができます。

doubleの使い方

double型の変数を宣言する際は、以下のように記述します。

C
double 変数名 = 数値;

先ほども解説したように、C言語での小数はデフォルトで double型として扱われます。
そのため、float型では f を数値の末尾に付けて型を明示する必要がありましたが、double型の場合は数値のみの記述で問題ありません。
また、double型でも代入する値の指数表記が可能です。

以下のサンプルコードで、実際の動きを見てみましょう。

C
#include <stdio.h>
#include <float.h>

int main() {

    double num = 567.89;

    // double型の変換指定子はlf
    printf("numの値: %lf\n", num);

    // double型の指数表記の変換指定子はle
    printf("numの指数表記: %le\n", num);

    double d_min = DBL_MIN; // double型の最小値
    double d_max = DBL_MAX; // double型の最大値
 
    printf("double型の最小値: %le\n", d_min);
    printf("double型の最大値: %le\n", d_max);

    return 0;
}
実行結果
numの値: 567.890000
numの指数表記: 5.678900e+02
double型の最小値: 2.225074e-308
double型の最大値: 1.797693e+308

printf関数などでの double型の変換指定子は 「lf」 を使用します。
また、double型の指数表示の変換指定子は 「le」 です。

double型の最小値と最大値は、それぞれ DBL_MIN と DBL_MAXのマクロで取得することができます。

浮動小数点数を扱う際の注意点

C言語では、浮動小数点数型を使用することで小数を扱うことができますが、コンピュータの仕様上、プログラミングで表現できる数には限界があるため、場合によっては誤差が発生する可能性があります。
処理内容により、オーバーフローやアンダーフロー、丸め誤差や打ち切り誤差などの現象が発生するケースがあり、表示される値が厳密な数値ではない場合があるため、注意が必要です。

計算時に生じる「丸め誤差」

浮動小数点数型を扱う際に発生する誤差現象の1つが、丸め誤差です。
小数を含む計算を行う際に起こる可能性があります。

丸め誤差とは、値の計算結果が仮数部で表示可能な桁数を超えた場合に、枠内に収まるように四捨五入される現象のことを言います。
値が丸められることにより、厳密な数値とは異なってしまうため、計算結果はあくまでおおよその値である場合があることを前提としておきましょう。

まとめ

いかがでしたか?今回は、C言語で浮動小数点数型を使用する方法について解説しました。

実際のプログラムでは、小数を含む高度な計算をするケースも多く、浮動小数点数型は重要なデータ型の1つとなります。
基本的には double型の使用で問題なく動作できる場合がほとんどですが、容量などの問題で厳密に使い分ける必要が出てくるケースも中にはあるため、サイズなどの違いを把握した上で適したデータ型を選択できるようにしておくといいでしょう。

C言語の勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、C言語に限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Programmingカテゴリの最新記事