浮動小数点数 (IEEE 754)

IEEE 754形式と浮動小数点演算の誤差を学びます。

小数を扱う「浮動小数点数」と国際標準IEEE 754形式。仮数部・指数部の構造と精度・誤差を理解しましょう。

日野 こむぎ(びっくり) 日野 こむぎ

0.1 + 0.2 がぴったり 0.3 にならないって本当?

藤森 さやか 先生(笑顔) 藤森 さやか 先生

本当よ。
浮動小数点数では 0.1 が2進数だと循環小数になってしまって、有限ビットで打ち切るからどうしても誤差が出るのよ。

青木 澪(普段) 青木 澪

国際標準はIEEE 754。
単精度 (32bit: 符号1+指数8+仮数23) と倍精度 (64bit: 符号1+指数11+仮数52) の2形式が代表。

桃井 すみれ(しょんぼり) 桃井 すみれ

うぅ〜ん、なんだか構造が複雑そうですぅ…。

藤森 さやか 先生(普段) 藤森 さやか 先生

考え方は科学的記数法と同じなのよ。
1.5 × 10² みたいに「仮数部 × 基数^指数部」で表すの。
2進数版だと「1.xxx × 2^E」ということね。

青木 澪(普段) 青木 澪

補足すると、必ず先頭が1になる「正規化」を行うので、その1を省略して仮数部の精度を1ビット節約するケチ表現も覚えておくといいですよ。

日野 こむぎ(普段) 日野 こむぎ

その誤差って、どんなときに問題になるの?

藤森 さやか 先生(普段) 藤森 さやか 先生

たとえば金額計算ね。
絶対に誤差が許されない場面では浮動小数点数を使わず、整数 (cent単位) や十進BCD型を使うのが原則よ。
丸め誤差が積み重なって、大きなズレになってしまうこともあるの。

青木 澪(普段) 青木 澪

他にも、桁落ち (近い値の引き算で有効桁が消える) や情報落ち (大きな値と小さな値の加算で小さい方が消える) があります。
試験頻出なので押さえておきましょう。

確認クイズ

IEEE 754 単精度浮動小数点数の構成として正しいものはどれか。

  1. 符号8 + 指数8 + 仮数16
  2. 符号1 + 指数8 + 仮数23
  3. 符号1 + 指数11 + 仮数20
  4. 符号1 + 指数16 + 仮数15
こたえを見る

正解: 2. 符号1 + 指数8 + 仮数23

IEEE 754 単精度 (32bit) は 符号1bit + 指数8bit + 仮数23bit の構成です。倍精度 (64bit) は符号1+指数11+仮数52です。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。