• 規格はIEEE754として定まっている
    • その改良版としてIEEE754Rがある
    • 指数部は1-254の範囲の値が入る。指数部は127を引いた値を用いる。0と255は特殊な値に使う
    • 仮数部は小数点の左側にある1を除いた値を格納する(ケチ表現)
    • floatでは指数部を8ビット、仮数部を23ビット
    • doubleでは指数部を11ビット、仮数部を52ビット
    • 符号指数部仮数部の順で配置されているが、これは整数として比較しても大小関係が保たれるという工夫がある
  • マイナス方向の無限になる操作もオーバーフローと呼ぶことに注意!
  • 浮動小数点数の処理速度
    • 普通の計算ではdoubleを使い、より速度・消費電力が重要な部分でfloatを使うことがある
  • IEEE754以外の浮動小数点数
    • 機械学習の分野では、16ビット(IEEE754とは異なり、指数部が8ビットだったりする)や18ビット、24ビットの浮動小数点数を使うことがある
    • UNISYS社メインフレーム
  • 浮動小数点数の誤差
意味符号指数部仮数部
0000
-0100アンダーフロー
+inf01…10オーバーフロー, 1.0/0.0
-inf11…10オーバーフロー, -1.0/0.0, log(0)
NaNany1…10以外の値0.0/0.0, sqrt(-1)