データ型

浮動小数点型 ふどうしょうすうてんがた

小数IEEE 754floatdouble精度誤差数値型
浮動小数点型について教えて

簡単に言うとこんな感じ!

コンピュータが小数を扱うための仕組みだよ!「3.14」や「0.001」みたいな数を記録できるんだけど、実は完全には正確じゃなくて、ほんのわずかな誤差が生まれることがあるんだ。電卓と違って「だいたいこのくらい」で記録する方式ってイメージ!


浮動小数点型とは

浮動小数点型(Floating-Point Type)とは、プログラミングや計算機の世界で「小数を含む数値」を表現するためのデータ型のことです。整数(1、2、100など)だけでなく、3.14や−0.005のような小数、あるいは6.02×10²³のような非常に大きな数や、0.000001のような非常に小さな数も扱えます。

この「浮動」という言葉がポイントで、小数点の位置が固定されておらず、数の大きさに応じて小数点が浮かんで(移動して) 表現されることに由来しています。反対に小数点の位置が固定の方式は「固定小数点型」と呼ばれます。実務でよく見かける floatdouble という言葉が、この浮動小数点型を指しています。

ただし、浮動小数点型には精度誤差という落とし穴があります。たとえば「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 double80〜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/doublePythonfloatJavafloat/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ビット)

符号 Sign 1 bit 指数部 Exponent 8 bits 仮数部 Mantissa / Fraction 23 bits 合計 32ビット(= 4バイト)で1つの小数を表現

関連する規格・RFC

規格番号内容
IEEE 754-2019浮動小数点演算の国際標準規格。符号・指数部・仮数部のビット割当や丸め方法を定義

関連用語

  • 整数型 — 小数を持たない数値を扱うデータ型。カウントやIDに使う
  • データ型変数に格納できる値の種類を分類する概念
  • ビット・バイト — データの最小単位。浮動小数点の精度はビット数で決まる
  • 2進数 — コンピュータが内部で使う0と1の数体系。浮動小数点誤差の根本原因
  • 精度誤差・丸め誤差 — 浮動小数点演算で生じる微小なずれ。金額計算で要注意
  • 10進数型(decimal型) — 誤差なしで小数を扱える型。金融・会計処理向き
  • 変数 — データを格納しておく箱。型によって扱える値が異なる