読み方: ふどうしょうすうてんすう
1行定義
科学的記数法(仮数×2の指数乗)で実数を近似表現するコンピュータの数値形式。IEEE 754が標準でPythonのfloatやC言語のdoubleが該当
詳細解説
浮動小数点数(Floating-Point Number)は、コンピュータ上で実数(小数や非常に大きな数・非常に小さな数)を表現するための数値形式で、科学的記数法(例:1.23×10^5)と同様に「符号部・指数部・仮数部」の3要素で数値を表現します。名前の「浮動」は小数点の位置が固定でなく(小数点の位置をあらかじめ決めておく「固定小数点数」と対比)指数によって移動することに由来します。IEEE 754 が浮動小数点数の標準規格で、単精度(32ビット: float)と倍精度(64ビット: double)が主に使われます。単精度32ビットの内訳は符号1ビット+指数8ビット+仮数23ビット、倍精度64ビットは符号1ビット+指数11ビット+仮数52ビットです。倍精度は単精度より表現範囲と精度が高くなります。浮動小数点数の課題は「丸め誤差」です。0.1+0.2を浮動小数点で計算すると0.30000000000000004のようにわずかな誤差が生じます。これは2進数で0.1(10進)が無限小数になり正確に表現できないためです。金融計算・会計システムでは誤差が問題になるため、10進数を正確に扱う「BCD(2進化10進数)」や整数演算(金額を銭単位・円×100で整数処理)が使われます。浮動小数点数の特殊値として「±0」「±無限大(Inf)」「NaN(Not a Number: 0/0など不正演算)」があります。ITパスポート試験のシラバス(Ver.6.5)は「2進数の表現,基数変換の方法,2進数の加算や減算,表現可能な数値の範囲」までを扱い、浮動小数点数という語は挙がっていません。単精度・倍精度の浮動小数点数、仮数、指数、桁落ち・情報落ち・丸め誤差は基本情報技術者試験のシラバス(Ver.9.2)の用語例で、科目A(旧午前)で出題されています。
浮動小数点数の表し方(符号部・指数部・仮数部)
結論:浮動小数点数は、数を「符号 ×(1.xxx の2進数)× 2の指数乗」の形に直し、符号部・指数部・仮数部の3つに分けて記録します。単精度(32ビット)は符号1・指数8・仮数23ビット、倍精度(64ビット)は符号1・指数11・仮数52ビットです。
合格ナビに収録しているITパスポートの公開問題600問(令和3〜8年度・各100問)に浮動小数点数を問う問題は0問で、基本情報技術者試験の収録問題520問(平成21年度〜令和7年度の公開問題と2022年のサンプル問題)では4問です(誤差3問・正規化1問、2026-10-02 集計)。基本情報のシラバス Ver.9.2 は、単精度浮動小数点数・倍精度浮動小数点数・仮数・指数を「数値の表現」の用語例に挙げています(IPA 基本情報技術者試験 シラバス Ver.9.2)。
| 形式 | 全体 | 符号部 | 指数部 | 仮数部 | 指数に足す値(バイアス) |
|---|---|---|---|---|---|
| 単精度 | 32ビット | 1ビット | 8ビット | 23ビット | 127 |
| 倍精度 | 64ビット | 1ビット | 11ビット | 52ビット | 1023 |
表はIEEE 754の binary32・binary64 形式です(Python の struct モジュールはこの形式で数値を詰めると公式ドキュメントに明記されており、下の例のビット列もこれで確認しています)。
手順(自作の例:5.75を単精度にする)
- ① 2進数に直す:整数部 5 = 101、小数部 0.75 は2倍して整数部を取り出す(0.75 × 2 = 1.5 → 1、0.5 × 2 = 1.0 → 1)ので 0.11。合わせて 101.11
- ② 正規化:小数点を左に2桁動かして 1.0111 × 2²(1.xxx の形にそろえる操作を正規化と呼びます)
- ③ 符号部:正の数なので 0
- ④ 指数部:2 + 127 = 129 = 10000001
- ⑤ 仮数部:1.0111 の「1.」は必ず1なので記録せず、0111 の後ろを0で埋めて23ビットにします:01110000000000000000000
- 結果:0 10000001 01110000000000000000000(16進数で 40B80000)
- 検算(逆算):仮数部に「1.」を戻すと 1.0111(2進)= 1 + 0.25 + 0.125 + 0.0625 = 1.4375、指数部 129 − 127 = 2 なので 1.4375 × 2² = 5.75 に戻ります。
この論点の過去問を解く(表し方):
整数の2進数・補数の表し方は補数で確認できます。
浮動小数点数の誤差(丸め誤差・桁落ち・情報落ち)
浮動小数点数は仮数部のビット数が決まっているため、記録できない桁が出ると誤差が生じます。基本情報のシラバス Ver.9.2 は、桁落ち・情報落ち・オーバーフロー(あふれ)・アンダーフローや丸め誤差・打切り誤差を用語例に挙げています。
| 誤差 | 起きる場面 | 例 |
|---|---|---|
| 丸め誤差 | 記録できる桁数に限りがあり、最下位の桁より下を四捨五入・切上げ・切捨てする | 0.1は2進数で割り切れず、途中で丸められる |
| 桁落ち | 値がほぼ等しい数同士の減算で、有効桁数が大きく減る | 有効数字4桁の 1.234 − 1.233 = 0.001 は有効数字1桁 |
| 情報落ち | 絶対値の大きさが大きく違う数の加算・減算で、小さい方の下位の桁が結果に反映されない | 単精度で 100,000,000 + 1 を計算しても 100,000,000 のまま |
| オーバーフロー | 演算結果が扱える最大値を超える | 指数部で表せる範囲より大きな結果 |
0.1が正確に表せない理由
0.1を2倍して整数部を取り出す操作を続けると、0.2 → 0、0.4 → 0、0.8 → 0、1.6 → 1、1.2 → 1、0.4 → 0、0.8 → 0、1.6 → 1、1.2 → 1 … となり、0.000110011001100…(0011 の繰り返し)と終わりません。仮数部のビット数で打ち切って丸めるので、単精度の0.1は実際には 0.10000000149011612 です。倍精度でも 0.1 + 0.2 の結果は 0.30000000000000004 になります(いずれも Python で確認)。
情報落ちの例を確かめる
単精度の仮数部は「1.」を含めて24ビットなので、2²⁴ = 16,777,216 を超えると1刻みの整数を表せません。100,000,000 付近で表せる値は8刻みになっているため、1を足しても結果は 100,000,000 に丸められます。検算として、16,777,216 + 1 も単精度では 16,777,216 のままになることを確認しています(Python の struct で単精度に変換して計算)。
例題:丸め誤差の説明はどれか
浮動小数点形式で表現された数値の演算結果における丸め誤差の説明はどれか。
ア 演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。
イ 数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入や切上げ,切捨てを行うことによって生じる誤差である。
ウ 乗除算において,指数部が小さい方の数値の仮数部の下位部分が失われることによって生じる誤差である。
エ 絶対値がほぼ等しい数値の加減算において,上位の有効数字が失われることによって生じる誤差である。
出典:令和7年度 基本情報技術者試験 科目A 公開問題 問2(独立行政法人情報処理推進機構)(問題PDF・解答例PDF)
- 「桁数に限度があるので、最下位より下を四捨五入・切上げ・切捨てする」のが丸め誤差の定義そのものなので イ
- 検算(ほかの選択肢を消す):アは扱える最大値を超える場合でオーバーフローの説明、エはほぼ等しい数の加減算で上位の有効数字が失われる桁落ちの説明です(基本情報 平成22年度秋期 問2 の正解アと同じ内容)。ウは特定の演算で仮数部の下位が失われる場面の説明で、桁数の限度による端数の処理(四捨五入・切上げ・切捨て)ではありません。条件に合うのはイだけです。
この論点の過去問を解く(誤差):
ITパスポートでの出題ポイント
- 符号部・指数部・仮数部の3要素で実数を近似表現
- IEEE 754が標準:単精度32ビット(float)・倍精度64ビット(double)
- 丸め誤差:2進数で正確に表現できない小数が近似値になる(0.1+0.2≠0.3問題)
- 金融計算では誤差回避のため整数演算やBCDが使われる
関連用語
- 補数 コンピュータシステム
- 論理演算 コンピュータシステム
- 文字コード コンピュータシステム
- CPU コンピュータシステム
- Unicode(ユニコード) コンピュータシステム
「浮動小数点数」の過去問を解いて理解を定着
合格ナビでは IPA 公式 600問 + 3段階の解説(初級・標準・上級) で「○○とは?」をその場で深掘りできます。
シラバス 6.5 準拠 / 最終更新: 2026-10-02
