このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング第2回

10÷4=2の謎、Swiftで数値の種類を使い分ける

2016年08月22日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 日常生活の中で、数字について深く考えているという人は稀でしょう。数字を使うとしても、せいぜい買い物の際の合計金額やお釣りを計算したりする程度ではないでしょうか。あるいは時間を気にしながら行動する際には、何時まではあと何分ある、といった目安として分を数字で意識することはあるかもしれません。しかし、そうした数字がコンピューターの中でどのように表わされ、扱われているか、といったことなど、まったく考えてみたことがないという人がほとんどではないでしょうか。

 しかしプログラミングの世界に入るには、まず数字について考えを新たにすることが必要になります。特に、一般的な数学や、日常的な数字の感覚と、コンピューターの数字の扱いの違いを理解しておくことは重要です。

Swiftは壊れた電卓?

 前回は、Playgroundsに数字や簡単な計算式、さらにSwiftの関数を打ち込んで、結果が表示されるのを確認しました。その中で、三角関数などに与える数字に小数点が含まれていないとエラーになってしまうことは示しました。その場合、はっきりとエラーを示す赤い丸印が表示されるのでまだいいのですが、いろいろ試しているうちに、エラーは出ないのに結果がおかしいことに気づいた人もいるのではないでしょうか。

 例えば、「10/3」と入力すれば、電卓で計算してみるまでもなく、結果は「3.333333……」となることが期待されます。ところがSwiftが出してくる結果は単なる「3」なのです。

Playgroundに「10/3」とタイプして割り算を実行すると答えは「3」になります

 これは割り切れない数だからなのかと思い直して、割り切れるはずの「10/4」を計算させてみると、結果は「2.5」ではなく「2」なってしまいます。エラーが出ないだけに、こうした問題には気付きにくく、なおやっかいです。

「10/4」では「2」になり、四捨五入さえ考慮されていません

 この結果だけを見ると、Playgroundに対する信用は地に落ちたと思われるでしょう。電卓代わりに使えるどころではありません。もしこんな電卓があったら誰も買わない欠陥商品とみなされるでしょう。しかし、もちろんこれはSwiftにとってしごく正常な動作なのです。

この連載の記事

ASCII倶楽部の新着記事

会員専用動画の紹介も!