浮動小数点表現
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/18 17:58 UTC 版)
「コンピュータの数値表現」の記事における「浮動小数点表現」の解説
詳細は「浮動小数点数」を参照 絶対値が非常に大きな数や非常に小さな数を扱うには、浮動小数点方式を使う。 浮動小数点数は以下のような指数表記で数値を表現する形式である。 1.1030402E5 = 1.1030402×105 この方式の利点は、仮数の桁数だけでは表せない範囲の値を指数をかけることで表せる点にある。この方式の二進版がコンピュータ向けに定義されている。近年において最も一般的なものとして IEEE 754 があり、一例として以下のような「倍精度」の二進浮動小数点数形式(binary64)を定義している。 1ビットの符号部。符号を与える。 11ビットの指数部。「エクセス1023」形式。エクセス1023とは、指数を符号なしの整数 0 から 2047 で表し、実際の指数の値はそこから 1023 を減算したものとする方式である。 52ビットの仮数部。符号なしで、小数点以下の部分だけを保持し、小数点のすぐ上には常に "1" があるものとみなす(ケチ表現。ただし非正規化数の場合を除く)。 メモリ上では上位ビットから見て符号部、指数部、仮数部の順に並ぶ。 ここで s を符号部、e を指数部、b を指数のバイアス、f を仮数部とするとき、以下の値を表す。 ( − 1 ) s × 2 e − b × 1. f {\displaystyle (-1)^{s}\times 2^{e-b}\times 1.f} ただし、e = 0のときは非正規化数 ( − 1 ) s × 2 − b + 1 × 0. f {\displaystyle (-1)^{s}\times 2^{-b+1}\times 0.f} となり、e = b * 2 + 1のときは ±∞ や NaN を表す。 binary64で、十進数で精度約15桁の数値を有効数字の以下の範囲の値を表現できる。 最大最小正の数1.797693134862231E+308 4.940656458412465E-324 負の数-4.940656458412465E-324 -1.797693134862231E+308 これ以外に特別な値として NaN(Not A Number)があるが、ここでは解説しない。 浮動小数点数も整数と同様、表せる値の範囲がある。また、精度も制限されている。binary64は十進で15桁程度の精度である。演算結果の桁数がそれより多い場合、誤差が生じる。例えば、非常に大きな数に非常に小さな数(ゼロに近い数)を加算すると、有効数字の桁の範囲が違いすぎるため元の大きな数が得られる場合がある。なお、拡大解釈して「浮動小数点数を使った演算では常に誤差が生じる」などというのは間違いである。たとえば、1.0 + 1.0 は厳密に 2.0 になる。 また、二進の浮動小数点表現の問題として、人類が多用する十進の小数表現でいわゆる「きりが良い」数との相性が悪い場合の存在がある。すなわち、0.75 のような十進でも二進でも有限小数で表せる数なら何の問題もない。しかし、例えば 0.1 という十進の小数は、二進では 0.000110011... というように無限小数になる。
※この「浮動小数点表現」の解説は、「コンピュータの数値表現」の解説の一部です。
「浮動小数点表現」を含む「コンピュータの数値表現」の記事については、「コンピュータの数値表現」の概要を参照ください。
- 浮動小数点表現のページへのリンク