
C言語基礎|浮動小数点数とdouble型
浮動小数点数と double 型 ― 小数を正しく扱うために
これまでの章では、int 型を使って整数の計算を行ってきました。
しかし、現実世界の数値は必ずしも整数だけとは限りません。
- 割引後の金額
- 平均値
- 距離や時間
- 温度や割合
こうした 小数を含む値 を扱うために、C言語では
浮動小数点数(floating point number) という形式が用意されています。
浮動小数点数を扱う型はいくつかありますが、
この記事では最も基本で、実用性の高い double 型 を学習します。

整数型と double 型の違いを体験してみよう
まずは、整数型と double 型で 同じ数値を代入・計算したときに、結果がどう変わるか を見てみましょう。
元の例とは少し内容を変え、金額の計算 をテーマにします。
サンプルプログラム(整数と実数の比較)
プロジェクト名:chap2-6-1 ソースファイル名:chap2-6-1.c
// 整数型と double 型の違いを確認するプログラム
#include <stdio.h>
int main(void)
{
int price_int;
double price_double;
price_int = 12.75;
price_double = 12.75;
printf("int型の金額 :%d\n", price_int);
printf("price_int / 2 :%d\n", price_int / 2);
printf("double型の金額 :%f\n", price_double);
printf("price_double / 2 :%f\n", price_double / 2.0);
return 0;
}実行結果
int型の金額 :12
price_int / 2 :6
double型の金額 :12.750000
price_double / 2 :6.375000同じ代入でも結果が変わる理由
このプログラムでは、int 型と double 型の変数に 同じ 12.75 を代入しています。
しかし、結果はまったく同じにはなりません。
int 型への代入
| 特徴 | 内容 |
|---|---|
| 扱える値 | 整数のみ |
| 実数代入 | 小数部が切り捨てられる |
| 保存される値 | 12 |
そのため、
- price_int には 12 が格納される。
- price_int / 2 は 整数 ÷ 整数 の計算
- 結果は 6(小数部は切り捨て)
となります。
double 型への代入と演算
一方、double 型は 小数部を含む実数 を扱える型です。
| 特徴 | 内容 |
|---|---|
| 扱える値 | 実数(小数を含む) |
| 実数代入 | そのまま保持 |
| 演算 | 小数を含めて計算 |
そのため、
- price_double には 12.75 がそのまま格納される。
- price_double / 2.0 は 実数 ÷ 実数 の計算
- 結果は 6.375
となります。
printf 関数と変換指定子
数値を表示するには printf 関数を使いますが、
型に応じた変換指定 を使う必要があります。
| 型 | 変換指定 | 説明 |
|---|---|---|
| int | %d | 整数を表示 |
| double | %f | 浮動小数点数を表示 |
%f の f は floating point(浮動小数点) の頭文字です。
なお、何も指定しない場合は、小数点以下が 6 桁 表示されます。
型とオブジェクトの考え方
ここで、型と変数の関係を整理しておきましょう。
- 型:値の性質や扱い方を決める設計図
- 変数:型をもとに作られた実体(オブジェクト)
イメージで考えると…
- 型 → たい焼きの型
- 変数 → 実際に焼かれたたい焼き
int 型の設計図から作られた変数は「整数専用」、
double 型の設計図から作られた変数は「実数対応」になります。
このように、
型の性質は、そのまま変数(オブジェクト)の性質になる
という点がとても重要です。
int 型と double 型のまとめ
| 項目 | int 型 | double 型 |
|---|---|---|
| 表現できる値 | 整数のみ | 実数(小数を含む) |
| 小数部 | 切り捨て | 保持される |
| 主な用途 | 個数、回数、番号 | 平均、割合、金額 |
「計算結果がおかしいな?」と感じたときは、
どの型で計算しているか を確認するクセをつけておくと安心です 。
