数学の点数が一番高い人は誰?
Lesson 1●数字を文字列型に変換してみよう
平均点の小数点以下を切り捨てずに出力するには、どうしたらいいのでしょうか。その説明の前に、「数字を文字列に変換する」という技を覚えておきましょう。下のプログラムを見てください。右ページで登場したプログラムから、さらに1行加わっています。「let」で定数「SK_ave_str」を宣言し、右辺には「SK_ave.description」とあります。「str」は「String」、つまり文字列を意味します。
では、「.description」とは一体何でしょうか。実は、これを書き加えると、「.」の左にあるInt型やDouble型を文字列型に変換できるのです。これは、変換元がInt型の場合は「String(num)」と書くこともできます。しかし、「String(num)」は小数点やマイナスがつくとエラーになってしまいます。何がくるかわからないときは、さまざまな数値に対応している「.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に詳しいツバメ。ノンプログラマーにも丁寧にプログラミングを教えてくれます。