浮動小数点型 ふどうしょうすうてんがた
簡単に言うとこんな感じ!
コンピュータが小数を扱うための仕組みだよ!「3.14」や「0.001」みたいな数を記録できるんだけど、実は完全には正確じゃなくて、ほんのわずかな誤差が生まれることがあるんだ。電卓と違って「だいたいこのくらい」で記録する方式ってイメージ!
浮動小数点型とは
浮動小数点型(Floating-Point Type)とは、プログラミングや計算機の世界で「小数を含む数値」を表現するためのデータ型のことです。整数(1、2、100など)だけでなく、3.14や−0.005のような小数、あるいは6.02×10²³のような非常に大きな数や、0.000001のような非常に小さな数も扱えます。
この「浮動」という言葉がポイントで、小数点の位置が固定されておらず、数の大きさに応じて小数点が浮かんで(移動して) 表現されることに由来しています。反対に小数点の位置が固定の方式は「固定小数点型」と呼ばれます。実務でよく見かける float や double という言葉が、この浮動小数点型を指しています。
ただし、浮動小数点型には精度誤差という落とし穴があります。たとえば「0.1 + 0.2」を計算すると、コンピュータ内部では「0.30000000000000004」のような値が出ることがあります。お金の計算などに使うと丸め誤差が積み重なる危険があるため、用途に応じて使い分けが必要です。
浮動小数点型の仕組み
浮動小数点型は、数値を「符号・仮数部・指数部」の3つのパーツに分けて記録します。これは科学の世界で使う「指数表記(例:1.23 × 10⁴)」とほぼ同じ考え方です。
| パーツ | 役割 | 例(1.23 × 10⁴ の場合) |
|---|---|---|
| 符号(Sign) | プラスかマイナスか | + |
| 仮数部(Mantissa) | 有効数字の部分 | 1.23 |
| 指数部(Exponent) | 何乗するか(小数点の位置) | 4 |
コンピュータはこの3つを 2進数(0と1) で表現します。桁数(ビット数)が大きいほど精度が高くなります。
主な種類:float と double の違い
| 型名 | ビット数 | 有効桁数(目安) | 主な用途 |
|---|---|---|---|
float(単精度) | 32ビット | 約7桁 | ゲームのグラフィック・センサーデータなど |
double(倍精度) | 64ビット | 約15桁 | 科学計算・一般的な数値処理 |
long double | 80〜128ビット | 約18〜34桁 | 高精度な科学計算 |
💡 覚え方: “double”は”float”の2倍の精度!名前のまま覚えればOK。
なぜ誤差が生まれるの?
2進数では「0.1」をぴったり表現できないためです。10進数で「1/3 = 0.333…」が割り切れないのと同じ理屈で、2進数では0.1が無限小数になってしまいます。コンピュータはそれを決まったビット数で打ち切るため、わずかな誤差が発生します。
歴史と背景
- 1950年代: コンピュータ黎明期、各メーカーが独自の浮動小数点形式を採用。機種が違うと計算結果がバラバラで互換性がなかった
- 1985年: IEEE(電気電子学会) が「IEEE 754」規格を制定。浮動小数点の統一フォーマットが定まり、異なるコンピュータ間でも同じ結果が得られるようになった
- 1989年: IEEE 754が改訂・拡張され、倍精度なども含めた形で普及が加速
- 2008年: 「IEEE 754-2008」として大規模改訂。16進浮動小数や10進浮動小数なども規格化された
- 現在: C言語の
float/double、Python のfloat、Java のfloat/doubleなど、ほぼすべての主要言語でIEEE 754が採用されている
浮動小数点型 vs. その他の数値型
数値を扱うデータ型は浮動小数点型だけではありません。用途に応じて使い分けが重要です。
| 型の分類 | 例 | 小数を扱える? | 精度誤差 | 主な用途 |
|---|---|---|---|---|
| 整数型(int など) | 1, 42, -100 | ❌ | なし | カウント・ID・インデックス |
| 浮動小数点型(float/double) | 3.14, -0.5 | ✅ | あり(わずか) | 科学計算・センサー値・座標 |
| 固定小数点型 | 1.00, 99.99 | ✅ | なし(範囲制限あり) | 組み込み機器・音声処理 |
| 10進数型(decimal など) | 0.10, 1.23 | ✅ | ほぼなし | 金額・税率の計算 |
⚠️ 実務の注意点: 金額・税率・割引率など「1円の誤差も許されない」計算には
decimal型や整数型(円単位で管理)を使いましょう。浮動小数点型で金額計算をするのは危険です!
浮動小数点型の内部構造(IEEE 754 単精度 32ビット)
関連する規格・RFC
| 規格番号 | 内容 |
|---|---|
| IEEE 754-2019 | 浮動小数点演算の国際標準規格。符号・指数部・仮数部のビット割当や丸め方法を定義 |