実数を使って1000年の秒数を計算しましょう. Ocamlでは次のようになります:
# 60.0 *. 60.0 *. 24.0 *. 365.24 *. 1000.0;; - : float = 31556736000 #
今度はそれらしい結果になりましたね.
実数の式を書くときは次の点に注意して下さい:
このように実数かどうかを区別しなければいけないのは, コンピュータの内部では整数と実数は全く違った形式で表わされているためです. プログラム言語によっては, 自動的に整数と実数を変換するものもありますが, Ocaml ではそのようなことをしないため, プログラムを書く人が気を付ける約束になっています.
因みに, 間違って整数と実数を掛けてしまうと次のようなエラーになります.
# 60 * 60.0;; Toplevel input: # 60 * 60.0;; ^^^^ This expression has type float but is here used with type int
最後の行のメッセージは「下線の引かれた「60.0」は実数(float)なのだけれども, 整数(int)でなければいけない」と言っています.
# 60 *. 60.0;; Toplevel input: # 60 *. 60.0;; ^^ This expression has type int but is here used with type float
この例では逆に実数どうしの掛算(*.)に整数(60)が使われたため, 「下線の引かれた部分が整数(int)なのだが, 実数(float)でなければいけない」と言っています.
逆にこのようなメッセージを見た場合は, 整数と実数の区別を間違っているかどうかを確認するのがよいでしょう.
17.4.2 十年・百年・千年の秒数と整数の範囲 | 17.4.3 千年の秒数と実数を使った数式 | 17.4.4 数式のまとめ | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Sun, 03 Jul 2005 13:30:58 JST (1489d) |