カテゴリ: C言語 更新日: 2026/01/08

C言語の浮動小数点型(float, double)を完全ガイド!初心者でもわかる精度と違い

C言語の浮動小数点型(float, double)の精度と違い
C言語の浮動小数点型(float, double)の精度と違い

先生と生徒の会話形式で理解しよう

生徒

「C言語で小数を扱いたいのですが、floatとdoubleの違いがよく分かりません。どっちを使えばいいのでしょうか?」

先生

「C言語では、小数を扱うときに浮動小数点型というデータ型を使います。代表的なのはfloatとdoubleで、精度や扱える範囲が違います。」

生徒

「数字の大きさに合わせて選ばないとだめなんですね?」

先生

「その通りです。ゲーム開発や科学計算などでも間違った型を選ぶと、計算結果がズレてしまうことがあります。」

1. 浮動小数点型とは?

1. 浮動小数点型とは?
1. 浮動小数点型とは?

C言語で小数を扱いたいときは、整数型ではなく浮動小数点型を使います。浮動小数点とは、小数点の場所が動くという意味で、とても大きな数やとても小さな数を柔軟に扱える仕組みです。パソコン内部では指数表記と呼ばれる方式で保存されるため、幅広い桁数を表現できます。

例えば、三・一四一五九などの円周率、小数を含む物理計算、温度や重さ、センサーの値など、現実世界のデータを表すときに便利です。整数だけでは足りない場面が多いので、floatやdoubleを選ぶことはC言語プログラミングの基本になります。

2. float型の特徴と使い方

2. float型の特徴と使い方
2. float型の特徴と使い方

floatは軽量な浮動小数点型で、メモリ使用量が少なく計算も速い特徴があります。一般的には約七桁くらいまでの精度で計算できます。日常的な計算や簡単な小数の処理など、大きな誤差を気にしない場面で便利です。


#include <stdio.h>
int main(void){
    float price = 3.14f;
    printf("%f\n", price);
    return 0;
}

floatだけを使う初心者も多いですが、実は精度が足りず、少しずつ誤差が大きくなってしまうことがあります。特に金融計算や科学計算では注意が必要です。

3. double型の特徴と使い方

3. double型の特徴と使い方
3. double型の特徴と使い方

doubleはfloatより高精度な浮動小数点型です。一般的には約十五桁程度の精度まで表現できます。そのため、正確さを重視するプログラムではdoubleを選ぶことが多く、C言語では標準的な小数型としてよく使われます。


#include <stdio.h>
int main(void){
    double pi = 3.1415926535;
    printf("%lf\n", pi);
    return 0;
}

floatよりもメモリを多く使いますが、そのぶん数値の誤差を小さくできます。科学演算、統計処理、画像処理、ゲームの物理演算などでdoubleが活躍します。

4. floatとdoubleで誤差が出る理由

4. floatとdoubleで誤差が出る理由
4. floatとdoubleで誤差が出る理由

初心者が戸惑うのは、小数を計算すると結果が綺麗にならず、少しずれた数字になることです。これは浮動小数点の計算誤差と呼ばれるもので、内部では二進数で計算しているため、ぴったり表せない小数が存在します。

例えば〇・一という数字は見た目は簡単でも、二進数では無限に続いてしまうため、機械的に丸めて保存されます。この丸めが何度も積み重なると、結果が少しずつずれてしまうのです。

5. 実際の誤差を確認しよう

5. 実際の誤差を確認しよう
5. 実際の誤差を確認しよう

floatとdoubleで違いがどれほど出るのか実験してみます。C言語ではprintfで小数点以下の桁数を表示できます。


#include <stdio.h>
int main(void){
    float a = 0.1f + 0.2f;
    double b = 0.1 + 0.2;
    printf("float:%0.20f\n", a);
    printf("double:%0.20lf\n", b);
    return 0;
}

float:0.30000001192092895508
double:0.29999999999999998890

floatは特に誤差が目立ちやすく、doubleは誤差が小さくなります。見た目は三〇〇と同じでも、内部ではほんの少しずれています。

6. どちらを使うべきか判断するコツ

6. どちらを使うべきか判断するコツ
6. どちらを使うべきか判断するコツ

もしゲームやグラフィックのように軽くて速い計算が必要ならfloatが向いています。一方、精度が重要なプログラムではdoubleを選ぶと安心です。特に金融や統計では正確さがとても大切です。初心者は迷ったらdoubleを選ぶと安全です。

メモリが少ない組み込み機器ではfloatが使われ、パソコンやサーバーではdoubleが一般的です。実際の開発現場でも、目的に合わせて型を切り替えることがあります。

7. printfでの表示フォーマットの違い

7. printfでの表示フォーマットの違い
7. printfでの表示フォーマットの違い

floatとdoubleではprintfの指定子が違います。floatは%fと書き、doubleは%lfと書きます。細かい桁数を表示したいときは、小数点以下の桁数を指定することもできます。


printf("%f\n", value);     // float
printf("%lf\n", value2);   // double
printf("%.10f\n", value);  // 桁数指定

画面に表示する値が想定と違うときは、桁数の指定が足りなかったり、型が違っていたりすることが原因になるので必ず確認しましょう。

8. floatとdoubleを混ぜて使うときの注意

8. floatとdoubleを混ぜて使うときの注意
8. floatとdoubleを混ぜて使うときの注意

floatとdoubleを同時に計算する場合、自動的にdoubleへ変換されることがあります。これは暗黙の型変換と呼ばれます。精度が変化し、思わぬ誤差が入る原因になります。そのため、型を統一することを意識すると良い結果を得られます。

ただし、初心者の段階では無理に意識しなくても構いません。まずは小数を扱うと誤差が出るという感覚だけつかんでおけば十分です。経験を積むと、型と計算結果の関係が自然と理解できるようになります。

カテゴリの一覧へ
新着記事
New1
C++
C++の変数のスコープと有効範囲を完全解説!初心者でもわかる基本と考え方
New2
C++
C++とは?歴史と特徴を初心者向けに解説!Rustとの違いとモダン言語比較
New3
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド
New4
Rust
Rust開発環境をLinuxで構築する方法とおすすめ設定を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.2
Java&Spring記事人気No2
C言語
C言語の関数定義と呼び出しを完全ガイド!初心者でも分かる基本の書き方
No.3
Java&Spring記事人気No3
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.4
Java&Spring記事人気No4
C言語
Makefile入門:C言語プロジェクトを自動ビルドしよう!初心者でも分かる仕組みと使い方
No.5
Java&Spring記事人気No5
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作
No.6
Java&Spring記事人気No6
C言語
C言語の開発環境をWindowsに構築する方法【Visual Studio編】
No.7
Java&Spring記事人気No7
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.8
Java&Spring記事人気No8
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド