
C言語入門|C言語の小数型を理解しよう:float型とdouble型の違いと注意点
整数型に続いて扱うのが、小数を扱うための float 型 と double 型 です😊
C言語にはさまざまな数値型がありますが、この2つは「小数を扱うときに必ず使う」基礎中の基礎。
たとえば、
- 身長 → 171.3
- 体重 → 67.5
- 気温 → -2.8
- 金額の計算(割引率など)
といった“小数のある値”を扱うときには、必ずこのどちらかを使うことになります。
ただし……小数型には 落とし穴 があります⚠️
精度や誤差など、整数型とは違った注意点があるので、しっかり理解しておきましょう✨

🧮 小数を扱う2つの型:float と double の違い
まずは特徴を表で比較してみましょう👇
📋 float と double の比較
| 型 | メモリ消費 | 表現できる小数の精度 | 利用頻度 | コメント |
|---|---|---|---|---|
| float | 4バイト | およそ6~7桁 | △ | 精度が低いため特殊用途向け |
| double | 8バイト | およそ15~16桁 | ◎ | 標準的な精度。通常はこちら |
✔ 結論
小数を使うなら、基本は double を選べば安心😊!
理由は精度の高さ。
6桁しか正確でない float では、多くの場面で誤差が問題になります。
💻 小数型のサンプルプログラム
プロジェクト名:2-5-1 ソースファイル名: sample2-5-1.c
#include <stdio.h>
int main(void)
{
double height = 165.8; // 小数を正確に扱いたいので double を使用
float bmiRate = 22.7F; // float の場合は末尾に F を付ける
printf("身長は %.1f cm です\n", height);
printf("BMI 指標 %.1f を参照中…\n", bmiRate);
return 0;
}📝 ここで登場した命令の解説
printf の書式
printf("文字列", 値);小数を表示するときには %f を使います。
| 書式 | 意味 |
|---|---|
| %f | 小数をそのまま表示 |
| %.1f | 小数1桁まで表示 |
| %.3f | 小数3桁まで表示 |
例
printf("%.1f\n", height);float 型に F が必要な理由
67.5 はデフォルトで double とみなされるため、float 変数に入れるときは
float value = 67.5F;と F を付けて float リテラルであることを示します。
⚠️ 超重要!小数は厳密な計算ができない
float や double は「浮動小数点数(floating point)」と呼ばれ、
2進数で小数を表現しています。
しかし……
2進数では 0.1 や 0.3 のような一見シンプルな小数も 正確に表せない のです😱💦
0.1(10進数)
↓ 変換
0.00011001100110011...(2進数で無限に続く)
→ メモリに保存するときに途中で打ち切られる
→ わずかな誤差が必ず残る!
この誤差が加算・乗算を繰り返すうちに広がり、
大きなズレになることもあります😥
✔ 浮動小数点の弱点
- 内部的には“近似値”を扱っている。
- 計算誤差が蓄積する。
- 誤差が許されない処理(お金、座標計算など)では使用禁止
🎯 誤差が許されない場合
- 整数で扱う。
- 固定小数点方式を使う。
- 文字列で扱う。
- 専用ライブラリ(decimalなど)を使う。
浮動小数点はとても便利ですが、
“完璧ではない” ということを絶対に覚えておきましょう🌟
📘 float と double の使い分けまとめ
| 場面 | 選ぶ型 | 理由 |
|---|---|---|
| 通常の小数計算 | double | 精度が高く誤差が小さい。 |
| メモリ節約が重要 | float | 組み込みシステムや大量データ |
| 誤差が絶対に許されない | 使用不可 | 整数 or fixed-point を使う。 |
| 非常に大きい or 非常に小さい値 | double | 表現可能範囲が広い。 |
