ソフト開発

ソフト開発のトピックス-PR-

矢沢久雄のソフトウエア芸人の部屋

コン基礎の教え方の宝庫(2) 固定小数点数と浮動小数点数

私はこうやって教えています~難解な技術をわかりやすく教えるコツ~

2008/03/24

 固定小数点数と浮動小数点数は、どちらもコンピュータが小数点のある数を取り扱う形式です。どちらも、やや難解であまり面白くない(かな?)ので、堅苦しく説明したら新人さんたちは拒絶反応を示すでしょう。どのように説明すればよいか、講師を務める筆者は、いつも頭を悩ませています。筆者の教え方を紹介しますので、皆様のご意見をいただければ幸いです。

小数点数を表すには工夫が必要です

 浮動小数点数の説明の前に、2進数の基本的な説明は終わっているとします。新人さんたちは、2進数の1桁が、デジタルデータを伝える1本の電線に対応することを知っています。そこで、こんな切り口で説明を始めます。

 0と1しかないのだから、小数点のある数を表せないよね。だって、小数点のドット(.)を表せないでしょう。紙の上になら0.101のように小数点のある2進数を書けるけど、これをそのまま電気では表せないよね。電線の電圧が低なら0で、電圧が高なら1、というだけの取り決めなんだから、小数点を表す手段がないよね。そもそもコンピュータというものは、整数しか取り扱えないんだよ。

 新人さんたちは、「うんうん。それで、次の話は?」と期待した顔をしてくれます。この顔を確認してから、以下のように説明を続けます。

 でも、人間の世界には、あちこちに小数点数があるよね。テストの平均点だって、円周率だって、銀行の金利だって、みんな小数点数だね。コンピュータで小数点数が取り扱えないと不便だよね。どうしたらいいか、皆で考えてみましょう。なんてことをやっていると、今日1日の研修が終わっちゃうので、コンピュータで小数点数を取り扱う方法を教えちゃいましょう。コンピュータを使う人間が、整数だけで小数点数を表す工夫をすればよいのです。この工夫には、主に2つのアイディアがあります。それは「固定小数点数」と「浮動小数点数」です。

2進数でなく10進数の例の方がわかりやすい

 2進数の説明が終わっているからといって、いきなり2進数で例を示すのはよくないと思います。ふだんの生活で慣れ親しんでいる10進数で、固定小数点数と浮動小数点数の具体例を示した方が、イメージをつかみやすいでしょう。2進数の例は、新人さんたちが十分にイメージをつかめてから示しましょう。

 固定小数点数というアイディアは、どこかに小数点のドットがあると取り決めるものなんだ。2進数だとわかりにくいから10進数で例を示すと、たとえば円周率3.14という小数点数は、下4桁を小数点以下とする取り決めなら、31400という整数で表せる。このまま半径2cmの円の面積を計算すると、2×2×31400=125600となるね。125600という結果をコンピュータのディスプレイに表示するとき、下4桁の前にドットを表示して12.5600cm2とすればいいでしょう。つまり、コンピュータの内部では整数で計算して、表示するときに小数点数を付けるんだ。
 もう1つの浮動小数点数というアイディアは、3.14という小数点数を+0.314×101と表し、小数点以下の数字314(これを仮数と呼ぶ)、指数1、そして数値の符号(プラスなら0、マイナスなら1)という3つの情報で表すんだ。仮数の314、指数の1、符号の0または1、どれも整数だね。

それぞれの長所と短所に注目させる

 これはコンピュータ技術に限ったことではありませんが、同じ目的で複数のアイディアが示される場合がよくあります。どれかが一方的に優れたアイディアというわけではないからです。それぞれの長所と短所に注目すれば、整理して覚えられ、適切に使いこなせるようになります。固定小数点数と浮動小数点数でも、それぞれの長所と短所を説明しましょう。

 固定小数点数の長所は計算時に誤差が生じにくいこと、短所は大きな数や小さな数が表せないことです。逆に、浮動小数点数の長所は、大きな数と小さな数が表せること、短所は誤差が生じやすいことです。なぜ? と思うよね。その理由は、それぞれの形式の仕組によるものなんだ。コンピュータ技術に複数のアイディアがある場合は、長所と短所に注目して区別し、仕組は長所と短所の理由として覚えるといいよ。
 長所と短所に注目する習慣を持てば、技術を適切に使いこなせるようになる。つまり「できるエンジニア」になれるんだ。大きな値や小さな値を取り扱わないけど、誤差が生じたら困る場合には、固定小数点数を使えばいい。具体例としては、金銭計算がある。お金の計算では、1円の誤差も許されないからです。逆に、多少の誤差が生じても構わないが、大きな値や小さな値を取り扱えないと困る場合には、浮動小数点数を使えばいい。具体例としては、長さ、面積、体積、質量などを求める科学技術計算がある。長さや質量の計算で、1少しぐらいの誤差が生じても、実用上は何も問題ないでしょう。

...ここまでで、だいたい30分ぐらいの講義になります。この後は、長所と短所の理由として、固定小数点数と浮動小数点数の仕組をより詳しく説明していきます。こんな教え方ですが、いかがでしょう。皆様のご意見をお待ち申し上げます。

  • このエントリーをはてなブックマークに追加
  • Evernoteでクリップする
  • 印刷する

今週のトピックス-PR-

この記事に対するfacebookコメント

nikkeibpITpro

▲ ページトップ

Twitterもチェック

執筆者一覧

イベントINFO -PR-

最新号

注目の書籍

好評発売中!

XperiaモバイルAV活用ブック[docomo Z2/au ZL2対応]

もはや「AV端末」! Xperia最新機種を フルに使いこなすためのガイドブック