AI生成コンテンツ / AI-generated contents
目次
本項で扱う範囲
本項の要点
小学3年小数の意味、表し方、大小、簡単な加法・減法を学ぶ
小学4年小数の仕組みと加法・減法、小数に整数を掛ける乗法・除法を学ぶ
小学5年小数を掛ける乗法と小数で割る除法へ広げる
小学6年分数との関係を捉え、整数・小数・分数を含む計算を確かめる
\( \TeX \)小数点、大小記号、筆算を表す
array を使う教科書で見かける式
| 内容 | 表示 | \( \TeX \)表記 |
|---|---|---|
| 位取り | \( \displaystyle 3.14=3+\frac{1}{10}+\frac{4}{100} \) | 3.14 = 3 + \frac{1}{10} + \frac{4}{100} |
| 大小比較 | \(0.8<0.75\) は誤り | 0.8 < 0.75 |
| 加法 | \(2.35+0.8=3.15\) | 2.35 + 0.8 = 3.15 |
| 乗法 | \(1.2\times0.4=0.48\) | 1.2 \times 0.4 = 0.48 |
| 除法 | \(4.5\div1.5=3\) | 4.5 \div 1.5 = 3 |
\( \TeX \)表記
小数は半角のピリオドを小数点として用い、\( 3.14 \) のように記述する。\( \displaystyle 3.14=3+\frac{1}{10}+\frac{4}{100} \) と分解すれば、3が一の位、1が10分の1の位、4が100分の1の位にあることが分かる。末尾の0は値を変えないので \( 0.8=0.80 \) であり、大小比較では位をそろえると \( 0.80>0.75 \) と判断しやすい。
掛け算には \(\times\)、割り算には \(\div\) を使う。小数の筆算を再現する場合は、位をそろえるために array 環境を使えるが、通常は横書きの式の方が簡潔である。
掛け算には \(\times\)、割り算には \(\div\) を使う。小数の筆算を再現する場合は、位をそろえるために array 環境を使えるが、通常は横書きの式の方が簡潔である。
\( \TeX \)命令の読み方と意味
| \( \TeX \)表記 | 読み方 | 意味 |
|---|---|---|
\frac{1}{10} | フラクション | 分数 \( \displaystyle \frac{1}{10} \) を作る |
\times | タイムズ | 乗算記号 \(\times\) |
\div | ディバイド | 除算記号 \(\div\) |
\lt | レス・ザン | 未満 \(<\) |
\gt | グレーター・ザン | より大きい \(>\) |
\begin{array} | ビギン・アレイ | 行と列をそろえる |
よくある間違い
- 小数点より右を一つの整数として比べる
- \(0.8\) と \(0.75\) は、\(0.80\) と \(0.75\) に位をそろえる。80が75より大きいので \(0.8>0.75\) である。
- 加減算で小数点をそろえない
- \(2.35+0.8\) は \(2.35+0.80\) と考える。末尾へ0を補っても値は変わらない。
- 乗算でも小数点を縦にそろえる
- 小数の乗算は整数として計算した後、二つの数の小数部分の桁数の合計だけ小数点を戻す。
- 小数で割るとき除数だけ整数にする
- \(4.5\div1.5\) では、割られる数と割る数の両方を10倍して \(45\div15\) とする。
- 小数点に全角の「.」や読点を使う
- 数式中では半角のピリオドを使って \(3.14\) と記述する。
コピーして使える例
小数の位取り
\( \displaystyle 3.14 = 3 + \frac{1}{10} + \frac{4}{100} \)大小比較
\( 0.8 = 0.80 > 0.75 \)
小数の乗法
\( 1.2 \times 0.4 = 0.48 \)
小数の除法
\( 4.5 \div 1.5 = 45 \div 15 = 3 \)
練習問題
次の問題を解き、式を\( \TeX \)表記で記述する。
- \(2.37\) を、整数、10分の1、100分の1を使った和で表す。
- \(0.6\) と \(0.58\) の大小を不等号で表す。
- \(3.4+1.27\) を計算する。
- \(2.5\times0.3\) を計算する。
- \(6.4\div0.8\) を、除数を整数に直して計算する。
解答例
- \( \displaystyle 2.37=2+\frac{3}{10}+\frac{7}{100} \)
- \(0.6=0.60>0.58\)
- \(3.4+1.27=3.40+1.27=4.67\)
- \(2.5\times0.3=0.75\)
- \(6.4\div0.8=64\div8=8\)
学習指導要領上の位置づけ
小学校第3学年の算数「A 数と計算」では、小数の意味と表し方、大小、簡単な小数の加法・減法を扱う。第4学年では小数の仕組みを十進位取り記数法と結び付け、加法・減法、小数に整数を掛ける乗法と整数で割る除法を学ぶ。第5学年では乗数や除数が小数の場合へ広げ、計算の意味を図や式で捉える。
第6学年では、分数を含む数の概念を深める中で、整数・小数・分数の関係を振り返る。本項の\( \TeX \)表記やパソコン内部の表現は学習指導要領の学習内容ではなく、学んだ数や計算をデジタル文書で正確に伝えるための発展的な話題である。
第6学年では、分数を含む数の概念を深める中で、整数・小数・分数の関係を振り返る。本項の\( \TeX \)表記やパソコン内部の表現は学習指導要領の学習内容ではなく、学んだ数や計算をデジタル文書で正確に伝えるための発展的な話題である。
次項:分数(小学2~6年)
次項では、整数を等分して生まれる分数を取り上げる。分子と分母、真分数・仮分数・帯分数、約分・通分、四則計算をたどり、\frac を用いた\( \TeX \)表記を紹介する。
コラム:パソコンにおける小数の扱い
パソコンは、多くの場合、小数を浮動小数点数として扱う。代表的な IEEE 754形式では、32ビットの「単精度」と64ビットの「倍精度」がある。単精度はおよそ10進7桁、倍精度はおよそ15~16桁までを区別できる目安である。ビット数が多い倍精度は、単精度より広い範囲と高い精度を持つが、実数を無限に正確に保存できるわけではない。

理由の一つは、内部で主に2進数を使うことである。10進数の \(0.5\) は2進数で \(0.1_2\)、\(0.25\) は \(0.01_2\) と有限桁で表せる。ところが、10進数の \(0.1\) は2進数では \(0.000110011\ldots_2\) と循環し、有限のビット数には収まらない。このため、最も近い表現へ丸めて保存することになる。
その結果、計算方法や表示桁数によっては、\(0.1+0.2\) の結果が見かけ上 \(0.30000000000000004\) になることがある。これはパソコンの故障ではなく、有限桁へ丸めた値で計算した結果である。一般的に「2進浮動小数点による誤差」と呼ばれる。

これとは別に、10進数でも循環小数となる \( 1 \div 3 \) は、「丸め誤差」と呼ばれる。これは2進数でも循環小数になる。一般に、10進数で循環する小数は2進数でも循環する。

通常の測定や科学計算では誤差を見積もって比較し、あらかじめ有効数字を決めておく。また、金額のように10進での厳密さが必要な処理では、最小単位の整数や10進小数型(BCD型)を使う。目的に合う数の表し方を選ぶことが大切である。
理由の一つは、内部で主に2進数を使うことである。10進数の \(0.5\) は2進数で \(0.1_2\)、\(0.25\) は \(0.01_2\) と有限桁で表せる。ところが、10進数の \(0.1\) は2進数では \(0.000110011\ldots_2\) と循環し、有限のビット数には収まらない。このため、最も近い表現へ丸めて保存することになる。
その結果、計算方法や表示桁数によっては、\(0.1+0.2\) の結果が見かけ上 \(0.30000000000000004\) になることがある。これはパソコンの故障ではなく、有限桁へ丸めた値で計算した結果である。一般的に「2進浮動小数点による誤差」と呼ばれる。
これとは別に、10進数でも循環小数となる \( 1 \div 3 \) は、「丸め誤差」と呼ばれる。これは2進数でも循環小数になる。一般に、10進数で循環する小数は2進数でも循環する。
通常の測定や科学計算では誤差を見積もって比較し、あらかじめ有効数字を決めておく。また、金額のように10進での厳密さが必要な処理では、最小単位の整数や10進小数型(BCD型)を使う。目的に合う数の表し方を選ぶことが大切である。
コラム:浮動小数点演算コプロセッサ
AI生成コンテンツ / AI-generated contents
初代IBM PCに使われたIntel 8088(8086)は整数演算を担当し、小数の計算はソフトウェアで実行した。別売りのIntel 8087を接続すると、浮動小数点演算をハードウェアへ任せられた。8087は8本のスタック式レジスタを持ち、単精度32ビットや倍精度64ビットの値を読み込むと、原則として符号1ビット、指数15ビット、仮数64ビットの80ビット拡張形式へ変換して計算する。
加減算では、まず指数をそろえるために指数の小さい側の仮数を右へずらし、仮数を加減算する。乗算では符号の排他的論理和、指数の加算、仮数の反復乗算を行う。除算では指数を減算し、仮数の商を1ビットずつ反復して求める。最後に仮数の先頭位置をそろえて正規化し、制御語で選んだ精度と方向に丸め、例外フラグを更新する。
8087は67ビットの内部ALUと、0~63ビットを1クロックで移動できるシフタを備えていた。乗算、除算、平方根の反復はハードウェアシーケンサが制御し、三角関数や対数関数には修正版CORDICを利用した。したがって、四則演算のすべてをCORDICで処理したわけではない。
8087は67ビットの内部ALUと、0~63ビットを1クロックで移動できるシフタを備えていた。乗算、除算、平方根の反復はハードウェアシーケンサが制御し、三角関数や対数関数には修正版CORDICを利用した。したがって、四則演算のすべてをCORDICで処理したわけではない。
| 演算 | 8087浮動小数点 | 8086符号なし16ビット整数 | 比較 |
|---|---|---|---|
| 加算 | 約50クロック(約10マイクロ秒) | 3クロック(0.6マイクロ秒) | 整数加算が約17倍高速 |
| 減算 | 約80クロック(約16マイクロ秒) | 3クロック(0.6マイクロ秒) | 整数減算が約27倍高速 |
| 乗算 | 約80/120クロック(約16/24マイクロ秒) | 118~133クロック(約23.6~26.6マイクロ秒) | 8087が同等以上の場合がある |
| 除算 | 約190クロック(約38マイクロ秒) | 144~162クロック(約28.8~32.4マイクロ秒) | 整数除算がやや高速 |
この表は演算本体の概算であり、メモリアクセスや実効アドレス計算を含まない。8087の加減算時間は命令名だけでなく、符号によって内部で仮数加算になるか仮数減算になるかで変わる。乗算の短い時間は、単精度値などで仮数の下位40ビットが0になり、反復を省略できる場合である。また、8086と8087は同じクロックを使いながら一部を並行して実行できる。
Intelが公表した8087エミュレータとの比較では、8087を搭載しない5MHzの8086が、最適化されたソフトウェアだけで浮動小数点演算を行うと次の時間を要した。単純な整数演算との比較以上に、専用コプロセッサの効果が大きいことが分かる。
Intelが公表した8087エミュレータとの比較では、8087を搭載しない5MHzの8086が、最適化されたソフトウェアだけで浮動小数点演算を行うと次の時間を要した。単純な整数演算との比較以上に、専用コプロセッサの効果が大きいことが分かる。
| 浮動小数点演算 | 8087 | 8086ソフトウェア | 高速化率 |
|---|---|---|---|
| 加算 | 約17マイクロ秒 | 約1,600マイクロ秒 | 約94倍 |
| 減算 | Intelの比較表には独立した測定値なし(加算と同系統の演算) | ||
| 乗算・単精度 | 約19マイクロ秒 | 約1,600マイクロ秒 | 約84倍 |
| 乗算・倍精度 | 約27マイクロ秒 | 約2,100マイクロ秒 | 約78倍 |
| 除算・単精度 | 約39マイクロ秒 | 約3,200マイクロ秒 | 約82倍 |
参考サイト
- 小学校学習指導要領(平成29年告示)解説 算数編:文部科学省
- 新しい学習指導要領のねらいの実現に向けて:文部科学省
- Supported Functions:KaTeX
- What Every Computer Scientist Should Know About Floating-Point Arithmetic:Oracle
- Number:MDN Web Docs
- The Intel 8087 Numeric Data Processor:Intel
- Intel 8087 FPU Information:PCjs Machines
- The 8086 Family User's Manual:Intel
(この項おわり)

この項では、小数の意味と位取りから始め、大小比較、加減乗除へ進む。小数点を含む式を読みやすく記述し、筆算とは異なる横書きの\( \TeX \)表記にも慣れていく。