17.4.3 千年の秒数と実数を使った数式

実数を使って1000年の秒数を計算しましょう. Ocamlでは次のようになります:

# 60.0 *. 60.0 *. 24.0 *. 365.24 *. 1000.0;; return2 - : float = 31556736000 #

今度はそれらしい結果になりましたね.

実数の式を書くときは次の点に注意して下さい:

このように実数かどうかを区別しなければいけないのは, コンピュータの内部では整数と実数は全く違った形式で表わされているためです. プログラム言語によっては, 自動的に整数と実数を変換するものもありますが, Ocaml ではそのようなことをしないため, プログラムを書く人が気を付ける約束になっています.

因みに, 間違って整数と実数を掛けてしまうと次のようなエラーになります.

# 60 * 60.0;; return2 Toplevel input: # 60 * 60.0;;   ^^^^ This expression has type float but is here used with type int

最後の行のメッセージは「下線の引かれた「60.0」は実数(float)なのだけれども, 整数(int)でなければいけない」と言っています.

# 60 *. 60.0;; return2 Toplevel input: # 60 *. 60.0;;   ^^ This expression has type int but is here used with type float

この例では逆に実数どうしの掛算(*.)に整数(60)が使われたため, 「下線の引かれた部分が整数(int)なのだが, 実数(float)でなければいけない」と言っています.

逆にこのようなメッセージを見た場合は, 整数と実数の区別を間違っているかどうかを確認するのがよいでしょう.