Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日: 更新日:

第9回 「型推論」に注意して平均点を出してみよう

著者: 崎谷実穂

第9回 「型推論」に注意して平均点を出してみよう

数学の点数が一番高い人は誰?

より実践的なプログラム

配列やfor文を組み合わせて使うと、これまで以上に複雑なプログラムを書くことができます。このプログラムの場合、どのような値が出力されるか考えてみましょう。

Lesson 1●数字を文字列型に変換してみよう

平均点の小数点以下を切り捨てずに出力するには、どうしたらいいのでしょうか。その説明の前に、「数字を文字列に変換する」という技を覚えておきましょう。下のプログラムを見てください。右ページで登場したプログラムから、さらに1行加わっています。「let」で定数「SK_ave_str」を宣言し、右辺には「SK_ave.description」とあります。「str」は「String」、つまり文字列を意味します。

では、「.description」とは一体何でしょうか。実は、これを書き加えると、「.」の左にあるInt型やDouble型を文字列型に変換できるのです。これは、変換元がInt型の場合は「String(num)」と書くこともできます。しかし、「String(num)」は小数点やマイナスがつくとエラーになってしまいます。何がくるかわからないときは、さまざまな数値に対応している「.description」が便利なのです。

プログラム内の数字を「文字」として出力する

「.description」を使って、文章の中に数値を埋め込んでいます。そうすると、何の数値を出力しているのか一目瞭然になります。

Lesson 2●Lesson 2 型を明示して正確な平均点を出そう

さて、ここからが本題です。右ページのプログラムでは、なぜ小数点以下が自動的に切り捨てられてしまったのでしょうか。それは、「numberOfStudents」「S_point」「K_point」「SK_all」のすべてが、型推論によってInt型になっていたのです。Int型とInt型の割り算では、整数のみを扱うため小数点は計算できません。

では、すべての型を明示してみるとどうなるのでしょう。書いてみたのが、下のプログラムです。人数である「numberOfStudents」は、意味として小数点になりえないので、Int型です。平均を計算する際には「SK_all」に型をそろえるため、Double型にしています。こうしてすべての型を明示すれば、小数点以下がなくなるというミスは防げます。こうして型をしっかり書いていくと、正確な平均点である「170.75点」が出力されます。

すべての型を明示して書いてみると?

Double型で計算すると、たとえ割り切れた場合でも「.0」という形で小数点以下まで出力されます。それを見れば、ぴったり割り切れたから整数なのか、Int型で小数点以下が切り捨てられているのかわかりますね。

崎谷実穂

ビジネス、IT、教育関係の記事・書籍のライティングを中心に活動するライター。プログラミングの経験はまったくなし。

 

びび

Swiftに詳しいツバメ。ノンプログラマーにも丁寧にプログラミングを教えてくれます。