浮動小数点数【floating point number】
概要
次

一つの数値を符号部(正負)、仮数部、指数部の3つのデータの組み合わせで表現する。データ形式としては符号-指数-仮数の順に格納することが多い。仮数に基数(通常は2)を指数乗した値を乗じ、符号を付け加えたものが表現する数値となる。指数部の値を変えることで、小数点の位置が文字通り「浮動」することからこのように呼ばれる。
例えば、「-4.375」は2進数では「-100.011」であり、仮数と指数に分離すると「-1.00011×1010」(値はすべて2進表記)となる。符号は正を0、負を1とすることが多いため、符号部の値は「1」、仮数部の値は「100011」、指数部の値は「10」となる。数値が0の場合は符号と指数は不定となるが、便宜上各部をすべて0としたもの(+0.0×100)を0の表現として扱うことが多い。
IEEE 754形式
浮動小数点数は全体のデータ長や仮数部と指数部のビット数の配分などで様々な形式が存在するが、広く普及している標準規格としてIEEE 754形式が知られる。
全体で16ビット(符号1+指数5+仮数10)の「半精度浮動小数点数」(half precision)、32ビット(符号1+指数8+仮数23)の「単精度浮動小数点数」(single precision)、64ビット(符号1+指数11+仮数52)の「倍精度浮動小数点数」(double precision)、128ビット(符号1+指数15+仮数112)の「四倍精度浮動小数点数」(quadruple precision)の4つの形式が定められており、それぞれ表現できる数値の幅の異なる。実用上は単精度と倍精度がよく用いられ、プログラミング言語や論理回路などでもこの2つに標準で対応しているものが多い。
仮数の2進数表現は先頭が必ず1になる(2以上の数字は使わない)ため、これを省略して代わりに下位の桁の表現に回す手法が用いられる。これを俗に「暗黙の1」または「ケチ表現」という。また、指数部を符号なし整数とするため、本来の値に「最大値の半分-1」を足した表現を用いる。これを俗に「ゲタ履き表現」という。例えば、指数部が8ビットの場合は127を加え、128が1を、126が-1を表す。
精度と誤差
浮動小数点数の特徴として、表現できる数値の範囲(ダイナミックレンジ)は指数部のビット長に依存し、表現できる精度(有効桁数)は仮数部のビット長に依存する。同じデータ長ならば整数型や固定小数点数型と比べて非常に大きな値から非常に小さな値までを扱える。
一方、巨大な数から極小の数まで扱える割には、表現できる桁数には強い制約がある。大きな数と小さな数を足したときに小さな数の影響が無視される「情報落ち」、計算結果の桁数が長すぎて後方が切り捨てられる「丸め誤差」が生じやすい。厳密な金額計算や科学技術計算を行う場合は、この特性を踏まえて注意深くプログラムを記述する必要がある。
関連用語
他の辞典等による「浮動小数点数」の解説 (外部サイト)
- ウィキペディア「浮動小数点数」
- 情処用語辞典「浮動小数点」
- JavaA2Z「浮動小数点」
- マンガで分かるプログラミング用語辞典「浮動小数点数」
- TechTerms.com (英語)「Floating Point」
- PC.net Computer Glossary (英語)「Floating Point」
- PC Magazine (英語)「floating point」