next up previous
Next: 4.0.0.1 例(ミニ浮動小数点体系). Up: 計算機における数の表現 Previous: 3 整数

4 浮動小数点数 (floating-point numbers)

「実際の計算機で浮動小数点表現が実現される形は、ここで議論する理想的な ものとは異なるかもしれない。しかしその差異は小さく、丸め誤差と いう基本的な問題を扱う場合には常にほとんど無視することが出来る」 -- Forsythe

数値計算で扱う数の範囲は極めて広い。整数や固定小数点数では不便である (ENIAC を開発した von Neumann はそれくらい何でもないと思ったらしいが)。 科学で現れる数の表現には「科学的表記法」 (scientific notaion) (あるいは「指数形式」 (exponential form)) と呼ばれるものがあるが、 これを取り入れたものが、 以下に説明する浮動小数点数 (floating point numbers) である。

以下に見るように、浮動小数点数の体系は数学的にはあまりきれいなもので はなく、実用的な観点からも完璧なものからはほど遠いものである。

この体系とつき合うには、物理や化学の実験でおなじみの有効数字の概念を 勉強した時の感覚が多少は役に立つが、かなり独特のものがあると思う。

基数 $\beta$ を固定する時、$0$ でない任意の実数 $x$

\begin{displaymath}
x = \pm\left(\frac{d_1}{\beta}+\frac{d_2}{\beta^2}+
\frac{d_3}{\beta^3}+\cdots\right)\times\beta^m
\leqno{(*)}
\end{displaymath}

の形に表現することが出来る。ただし、 $d_1, d_2, d_3,\cdots$

\begin{displaymath}
0<d_1\le\beta-1, \quad 0\le d_k\le\beta-1 \quad\hbox{($k=2,3,\cdots$)}
\end{displaymath}

を満たす整数である。( $x=\pm \alpha\times\beta^m, \quad 1/\beta\le
\alpha<1$, $m$ は整数)

そこで計算機の内部では上式を有限項で打ち切った

\begin{displaymath}
\pm\left(\frac{d_1}{\beta}+\frac{d_2}{\beta^2}+
\frac{d_3}{\beta^3}+\cdots+\frac{d_n}{\beta^n}\right)\times\beta^m
\end{displaymath}

で表現する。ただし $m$ の範囲にも制限がつく: $-m_{{}_L}\le m\le m_{{}_U}$

これを $\beta$$n$ 桁浮動小数点表示と呼び、この形に表現される数を 浮動小数点数 (floating-point numbers) という。

現在の実際の計算機で採用されている基数は、主として 2, 10, 16 である (パソコン、ワークステーションでは 2、スーパーコンピューターを除く大型機 では 16 が多い)。

通常は最上位の桁 $d_1$ は (上に書いたように) $0$ にならないようにして おく。この条件を満たしている表示を正規化 (normalize) された浮動小数点表 示という。


\begin{displaymath}
f=\frac{d_1}{\beta}+\frac{d_2}{\beta^2}+
\frac{d_3}{\beta^3}+\cdots+\frac{d_n}{\beta^n}
\end{displaymath}

を仮数部 (mantissa) または小数部 (fraction)、$\beta^m$ を指数部、$m$ を指 数 (exponent) という。

$0$ は浮動小数点表示においては特別扱いする。通常はその仮数部を all zero ( $d_1=d_2=\cdots=d_n=0$)、指数 $m=-m_L$ とすることにより表現する。

条件 $x_1\ne0$, $-m_{{}_L}\le m\le m_{{}_U}$ を満たす全ての (*) に、この $0$ を加えたもので一つの浮動小数点の体系 $F$ が出来る。



Subsections
next up previous
Next: 4.0.0.1 例(ミニ浮動小数点体系). Up: 計算機における数の表現 Previous: 3 整数
桂田 祐史
2012-05-28