指数法則 浮動小数点

ここでは浮動小数点の理解を指数法則を元に行います。 ここでの浮動小数点の理解を元に(単精度電卓)に進んでください。 また(指数 対数)ではここでの指数法則を実数指数に拡張します。

目次

累乗と指数
目次へ↑

同じ数を何回も掛け算することを累乗(るいじょう)又は冪乗(べきじょう)といいます。 累乗は指数を使って書くと便利です。 「$2$を$3$回掛ける」操作を「$2\times 2\times 2=2^3$」と表記します。 この右辺の$2$の右肩に小さく書いた数値$3$を指数といいます。 「$2^3$」は「$2$の$3$乗」と読みます。

指数を使う一番のメリットは指数法則が使えるようになることです。 指数法則を使うことで「掛け算や割り算」を「足し算や引き算」として扱うことができるようになります。 めちゃめちゃ使える法則です。 指数法則は次のように書くことができます。左辺の「掛け算や割り算」が右辺では「足し算や引き算」として扱うことができるようになってるところに注目してください。

$a\,\mbox{実数},\quad n\gt m\,\mbox{の自然数とする}$ \begin{align*} a^n\times a^m&=a^{n+m} \\ a^n\div a^m&=a^{n-m} \end{align*}
ここでは指数が負の値にならないように$n\gt m$としています。

正の値だけではなくゼロや負の値、つまりどんな整数指数でも指数法則が成り立つと便利です。 そのようにするためには「$0$乗は$1$」、「マイナス乗は逆数」と定義すると辻褄が合うようになります。

$a\neq 0\,\mbox{の実数},\quad n\,\mbox{整数とする}$ \begin{align*} a^0&=1 \\ a^{-n}&=\frac{1}{a^n} \end{align*}
ちなみに逆数を導入すると割り算が掛け算で扱えるのでので割り算記号が必要なくなります。 また、$a=0$ の時はゼロ除算になってしまうので、この時だけは例外として指数法則を使うのをあきらめなければなりません。 $0^0$ も定義できません。

いくつか具体例を見てみましょう。 以下の計算例ではちゃんと辻褄があってますね。 どんな整数指数でも辻褄があうことが証明できます。

\begin{alignat*}{5} a^2\times a^3 &= \left(a\cdot a\right)\cdot \left(a\cdot a\cdot a\right) & &= a\cdot a\cdot a\cdot a\cdot a & &= a^5 & &= a^{2+3} \\ a^3\times a^{-3} &= \left(\cancel{a}\cdot \cancel{a}\cdot \cancel{a}\right) \cdot \frac{1}{\cancel{a}\cdot \cancel{a}\cdot \cancel{a}}& &= 1& &= a^0& &= a^{3+(-3)} \\ a^2\times a^{-3} &= \left(\cancel{a}\cdot \cancel{a}\right) \cdot \frac{1}{\cancel{a}\cdot \cancel{a}\cdot a}& &= \frac{1}{a}& &= a^{-1}& &= a^{2+(-3)} \end{alignat*}
ちなみに掛け算記号「$\times$」は「$\cdot$」記号に省略したりします。 誤解が出ない範囲でなら「$\cdot$」記号も省略して構いません。

また、先のように$0$乗とマイナス乗を定めると、下の表のように$a$倍するごとに指数が1つずつ増え、$\frac{1}{a}$倍するごとに指数が1つずつ減るようになる関係が両方向に無限に続くようになります。

$\cdots$ $a$倍$\rightarrow$ $a$倍$\rightarrow$ $a$倍$\rightarrow$ $a$倍$\rightarrow$ $a$倍$\rightarrow$ $a$倍$\rightarrow$ $a$倍$\rightarrow$ $a$倍$\rightarrow$ $\cdots$
$\cdots$ $\leftarrow\frac{1}{a}$倍 $\leftarrow\frac{1}{a}$倍 $\leftarrow\frac{1}{a}$倍 $\leftarrow\frac{1}{a}$倍 $\leftarrow\frac{1}{a}$倍 $\leftarrow\frac{1}{a}$倍 $\leftarrow\frac{1}{a}$倍 $\leftarrow\frac{1}{a}$倍 $\cdots$
$\frac{1}{a^4}$ $\frac{1}{a^3}$ $\frac{1}{a^2}$ $\frac{1}{a}$ $1$ $a$ $a^2$ $a^3$ $a^4$
$a^{-4}$ $a^{-3}$ $a^{-2}$ $a^{-1}$ $a^0$ $a^1$ $a^2$ $a^3$ $a^4$
$\cdots$ 指数$+1\rightarrow$ 指数$+1\rightarrow$ 指数$+1\rightarrow$ 指数$+1\rightarrow$ 指数$+1\rightarrow$ 指数$+1\rightarrow$ 指数$+1\rightarrow$ 指数$+1\rightarrow$ $\cdots$
$\cdots$ $\leftarrow$指数$-1$ $\leftarrow$指数$-1$ $\leftarrow$指数$-1$ $\leftarrow$指数$-1$ $\leftarrow$指数$-1$ $\leftarrow$指数$-1$ $\leftarrow$指数$-1$ $\leftarrow$指数$-1$ $\cdots$

基本計算に使う指数法則は次のようになります。

$a,b\neq 0\,\mbox{の実数},\quad n,m\,\mbox{整数とする}$ \begin{align*} a^na^m&=a^{n+m} \\ \left(a^{n}\right)^{m}&=a^{nm} \\ \left(ab\right)^n&=a^nb^n \end{align*}
この3つの式の下の2つの式は、一番上の基本的な指数法則の式を使った累乗計算で証明できます。 以下は1例になりますが、どんな整数指数でも成り立つことが証明できます。
\begin{align*} \left(a^{2}\right)^{3}&=a^2 a^2 a^2 = a^{2+2+2} = a^{2\times 3}\\ \left(ab\right)^3&=\left(ab\right)\left(ab\right)\left(ab\right)=aaabbb=a^3b^3 \end{align*}

小数点の移動
目次へ↑

指数を使うと桁の纏まりを「10の累乗」のような非常に綺麗な形で表すことができます。 例えば「$1234.567$」という数値を「10の累乗の展開」で表すと次のようになります。

\begin{align*} 1234.567 &= 1\cdot 1000 + 2\cdot 100 + 3\cdot 10 + 4\cdot 1 + 5\cdot 0.1 + 6\cdot 0.01 + 7\cdot 0.001 \\ &= 1\cdot 1000 + 2\cdot 100 + 3\cdot 10 + 4\cdot 1 + 5\cdot \frac{1}{10} + 6\cdot \frac{1}{100} + 7\cdot \frac{1}{1000} \\ &= 1\cdot 10^3 + 2\cdot 10^2 + 3\cdot 10^1 + 4\cdot 10^0 + 5\cdot 10^{-1} + 6\cdot 10^{-2} + 7\cdot 10^{-3} \end{align*}

$n$を自然数とします。 ある数値に $10^n$ を掛けると小数点の位置が $n$ 右にずれます。 例えば以下のように $123.45$ に $10^3$ を掛けると小数点が3桁右にずれます。

\begin{align*} 123.45\times 10^3 &= \left(1\cdot 10^2 + 2\cdot 10^1 + 3\cdot 10^0 + 4\cdot 10^{-1} + 5\cdot 10^{-2}\right)\cdot 10^3 \\ &= 1\cdot 10^2\cdot 10^3 + 2\cdot 10^1\cdot 10^3 + 3\cdot 10^0\cdot 10^3 + 4\cdot 10^{-1}\cdot 10^3 + 5\cdot 10^{-2}\cdot 10^3 \\ &= 1\cdot 10^{2+3} + 2\cdot 10^{1+3} + 3\cdot 10^{0+3} + 4\cdot 10^{-1+3} + 5\cdot 10^{-2+3} \\ &= 1\cdot 10^5 + 2\cdot 10^4 + 3\cdot 10^3 + 4\cdot 10^2 + 5\cdot 10^1 \\ &= 1\cdot 10^5 + 2\cdot 10^4 + 3\cdot 10^3 + 4\cdot 10^2 + 5\cdot 10^1 + 0\cdot 10^0 + 0\cdot 10^{-1} \\ &= 123\underrightarrow{450.}0 \\ \end{align*}

$n$を自然数とします。 ある数値に $10^{-n}$ を掛ける($10^n$で割る)と小数点の位置が $n$ 左にずれます。 例えば以下のように $123.45$ に $10^{-4}$ を掛けると小数点が4桁左にずれます。

\begin{align*} 123.45\times 10^{-4} &= \left(1\cdot 10^2 + 2\cdot 10^1 + 3\cdot 10^0 + 4\cdot 10^{-1} + 5\cdot 10^{-2}\right)\cdot 10^{-4} \\ &= 1\cdot 10^2\cdot 10^{-4} + 2\cdot 10^1\cdot 10^{-4} + 3\cdot 10^0\cdot 10^{-4} + 4\cdot 10^{-1}\cdot 10^{-4} + 5\cdot 10^{-2}\cdot 10^{-4} \\ &= 1\cdot 10^{2-4} + 2\cdot 10^{1-4} + 3\cdot 10^{0-4} + 4\cdot 10^{-1-4} + 5\cdot 10^{-2-4} \\ &= 1\cdot 10^{-2} + 2\cdot 10^{-3} + 3\cdot 10^{-4} + 4\cdot 10^{-5} + 5\cdot 10^{-6} \\ &= 0\cdot 10^0 + 0\cdot 10^{-1} + 1\cdot 10^{-2} + 2\cdot 10^{-3} + 3\cdot 10^{-4} + 4\cdot 10^{-5} + 5\cdot 10^{-6} \\ &= 0\underleftarrow{.0123}45 \\ \end{align*}

浮動小数点
目次へ↑

10の累乗を掛けたり割ったりすることで、小数点の位置が右に左に移動します。 この時の左右に動く小数点を浮動小数点(floting point)といいます。 以下いくつかの例をみてみましょう。

例として「$12345000$」という数について考えてみましょう。 以下の式の右辺は全て「$12345000$」と同じ数を表しています。 \begin{align*} 12345000 &= 12345000.0 \times 10^0 \\ &= 1234500.0 \times 10^1 \\ &= 123450.0 \times 10^2 \\ &= 12345.0 \times 10^3 \\ &= 1234.5 \times 10^4 \\ &= 123.45 \times 10^5 \\ &= 12.345 \times 10^6 \\ &= 1.2345 \times 10^7 \\ \end{align*}
次の例として「$12345$」という数について考えてみましょう。 以下の式の右辺は全て「$12345$」と同じ数を表しています。 \begin{align*} 12345 &= 12345.0 \times 10^0 \\ &= 1234.5 \times 10^1 \\ &= 123.45 \times 10^2 \\ &= 12.345 \times 10^3 \\ &= 1.2345 \times 10^4 \\ &= 0.12345 \times 10^5 \\ &= 0.012345 \times 10^6 \\ &= 0.0012345 \times 10^7 \\ \end{align*}
次の例として「$123.45$」という数について考えてみましょう。 以下の式の右辺は全て「$123.45$」と同じ数を表しています。 \begin{align*} 123.45 &= 123.45 \times 10^0 \\ &= 12.345 \times 10^1 \\ &= 1.2345 \times 10^2 \\ &= 0.12345 \times 10^3 \\ &= 0.012345 \times 10^4 \\ &= 0.0012345 \times 10^5 \\ &= 0.00012345 \times 10^6 \\ &= 0.000012345 \times 10^7 \\ \end{align*}
次の例として「$0.012345$」という数について考えてみましょう。 以下の式の右辺は全て「$0.012345$」と同じ数を表しています。 \begin{align*} 0.012345 &= 0.012345 \times 10^0 \\ &= 0.12345 \times 10^{-1} \\ &= 1.2345 \times 10^{-2} \\ &= 12.345 \times 10^{-3} \\ &= 123.45 \times 10^{-4} \\ &= 1234.5 \times 10^{-5} \\ &= 12345.0 \times 10^{-6} \\ &= 123450.0 \times 10^{-7} \\ \end{align*}
次の例として「$0.00012345$」という数について考えてみましょう。 以下の式の右辺は全て「$0.00012345$」と同じ数を表しています。 \begin{align*} 0.00012345 &= 0.00012345 \times 10^0 \\ &= 0.0012345 \times 10^{-1} \\ &= 0.012345 \times 10^{-2} \\ &= 0.12345 \times 10^{-3} \\ &= 1.2345 \times 10^{-4} \\ &= 12.345 \times 10^{-5} \\ &= 123.45 \times 10^{-6} \\ &= 1234.5 \times 10^{-7} \\ \end{align*}
次の例として「$0.00000012345$」という数について考えてみましょう。 以下の式の右辺は全て「$0.000012345$」と同じ数を表しています。 \begin{align*} 0.00000012345 &= 0.00000012345 \times 10^0 \\ &= 0.0000012345 \times 10^{-1} \\ &= 0.000012345 \times 10^{-2} \\ &= 0.00012345 \times 10^{-3} \\ &= 0.0012345 \times 10^{-4} \\ &= 0.012345 \times 10^{-5} \\ &= 0.12345 \times 10^{-6} \\ &= 1.2345 \times 10^{-7} \\ \end{align*}

小数点が浮動している感じがつかめたでしょうか? 元々の数を仮数(かすう、mantissa)指数(しすう、exponent)で表すわけです。 数、仮数、指数の関係は次のようになります。

\begin{align*} \mbox{数}=\mbox{仮数}\times 10^{\mbox{指数}} \end{align*}

浮動小数点を用いて表記された数を浮動小数点数(floating point number)といい、対する浮動小数点を用いずに表記された数を固定小数点数(fixed-point number)といいます。 表現(表記法)が違うだけで、同じ数を表しています。 また、浮動小数点数を用いて数を表記することを浮動小数点表記(floating point notation)といいますが、浮動小数点表記は別名指数表記(exponential notation)とも呼ばれます。

正規化
目次へ↑

浮動小数点では数を仮数と指数を用いて表します。 しかし、指数の取り方によって様々な表現が可能になってしまいます。 そこで、仮数に次のように、「仮数の絶対値は$1$以上で$10$未満」という制限を付けます。 数と仮数が負の場合もありますので絶対値を付けています。 この制限によって、仮数と指数の値が1組に定まります。

\begin{align*} 1\le \left| \mbox{仮数}\right| \lt 10 \end{align*}
このように $1$ 以上 $10$ 未満の仮数にすることを正規化(normalization)と言います。 「正式な規則にする」と考えると、お堅い表現になってしまいますので、英語の normal(普通)という感覚でとらえた方が良いでしょう。 「浮動小数点には、普通は正規化したものを使う」と考えてください。

前節の例で挙げた浮動小数点による表記は、仮数の制限によって、次の枠内の式の右辺の表記に定まります。

\begin{align*} \mbox{固定小数点数} &= \mbox{(正規化)浮動小数点数} \\ 12345000 &= 1.2345\times 10^7 \\ 12345 &= 1.2345\times 10^4 \\ 123.45 &= 1.2345\times 10^2 \\ 1.2345 &= 1.2345\times 10^0 \\ 0.012345 &= 1.2345\times 10^{-2} \\ 0.00012345 &= 1.2345\times 10^{-4} \\ 0.00000012345 &= 1.2345\times 10^{-7} \\ \end{align*}
慣れるまでは小数点をずらして、右辺から左辺を求めて、正しいかどうかをチェックしてみると良いでしょう。 慣れてくると浮動小数点の方が扱いやすくなってきます。

正規化した浮動小数点表記を使う一番のメリットは指数部分を見ただけで数の最大桁が分かるという点にあります。 固定小数点表記では、もの凄く大きな数や、もの凄く小さな数を表現しようとすると、空位の部分をたくさんの $0$ を使って埋めなければならなくなり、非常にたくさんのスペースが必要になってしまいます。

ちなみに、数が「$0$」の時は、仮数を$1$以上$10$未満にすることができません。 仮数は「$0$」で、指数は「不定」です。 指数はその時の都合でどのような数値にしても構いません。

\begin{align*} 0 &= 0\times 10^\mbox{不定} \\ \end{align*}

科学表記
目次へ↑

浮動小数点表記に有効数字(significant figures)の概念を付加したものが科学表記(scientific notation)になります。 有効数字の桁数は有効桁(significant digits)とも呼ばれます。 要するに仮数部分には有効数字(有効桁数の数値)しか表示しないということです。

例えば地球の質量の例です。 現在以下のように求められています。

\begin{align*} 5.9724\times 10^{24} \rm kg \end{align*}
この書き方では有効数字は$59724$の5桁の数字ということになります。 仮数部分は $5.97235$ 以上 $5.97245$ 未満ということを表しています。 つまり $5.97235 \le \mbox{仮数} \lt 5.97245$ ということです。 仮数部は「6桁目を四捨五入した結果、5桁目を $4$ と表示している」という意味になります。 仮数部の5桁目は $3$ なのか $4$ なのかはっきりしませんが、4桁目の $2$ までは間違いないと信頼できます。

測定精度がもっと悪い場合は次のように表示します。

\begin{align*} 5.97\times 10^{24} \rm kg \end{align*}
この書き方では有効数字は$597$の3桁の数字ということになります。 仮数部分は $5.965$ 以上 $5.975$ 未満ということを表しています。 つまり $5.965 \le \mbox{仮数} \lt 5.975$ ということです。 仮数部には4桁目を四捨五入して3桁目を $7$ と表示しているという意味です。 仮数部の3桁目は $6$ なのか $7$ なのかはっきりしませんが、2桁目の $9$ までは間違いないと信頼できます。

仮数部分の最後の桁の値が $\pm 0.5$ 程度怪しいと考えてください。

現在の様々な物理量の科学表記は以下のようになります。

指数書式 (表示形式、フォーマット)
目次へ↑

書式とは、データをどのような形式で画面や印刷で表現するかを定めたものです。 書式のことを表示形式フォーマット(format)ともいいます。

上付き文字が使える環境では、以下のような浮動小数点数の表示が可能です。

\begin{align*} \mbox{仮数}\times 10^{\mbox{指数}} \end{align*}

しかし「電卓の液晶画面」「古いパソコンのキャラクター端末画面」「Excel のセル内」「プレーンテキスト」等では、上付き文字が簡単に使えませんし、掛け算記号が「*」のアスタリスクだったりします。 そのような場合は以下の枠内のように、指数(exponent)を表す e の左に仮数の値を、e の右に指数の値を表示します。

仮数e指数
この書式のことを「指数書式」や「指数表示形式」と呼びます。 大文字の E を使う場合もあります。
仮数E指数

以下にいくつかの例を上げます。 左が上付き文字が使える環境での表記で、→ の右が指数書式です。

$\phantom{-}5.9724\times 10^{24}$   →   5.9724e+24
$-5.9724\times 10^{24}$   → -5.9724e+24
$\phantom{-}1.6726\times 10^{-27}$ →   1.6726e-27
$-1.6726\times 10^{-27}$ → -1.6726e-27
指数書式では、仮数部の符号は負の時のみにつけるのが普通です。 指数部の符号は正の時でも負の時でもつけておくのが普通です。 「正の符号を表示するのか?」「仮数や指数を何桁まで表示するのか?」等の細かなことは、書式設定で変更します。


(藤本の担当講義に戻る)    (Tipsに戻る)