問題CPP00118の解答例と解説 C++ Lv.1
実数0の割り算(15分)
<解答例 1>
F11キーでフルスクリーンモード、Escキーで元に戻ります。
0.0で割り算したときは"inf"という文字列が表示されたよね。これは"無限大"(infinity)という意味だよ。プログラムの世界ではゼロで割り算することはできないことになっているんだ。
そして、0.0 を 0.0 で割り算したときには"nan"という文字列が表示されたと思うけど、これは"Not-a-Number(数値じゃないよ)"という意味だよ。ゼロをゼロで割ることもできないんだ。
これらの値は、正常な値ではないよ。プログラムの中で割り算をするときは、以下のように分母がゼロのときは割り算が実行されないようにしておくといいよ。
そして、0.0 を 0.0 で割り算したときには"nan"という文字列が表示されたと思うけど、これは"Not-a-Number(数値じゃないよ)"という意味だよ。ゼロをゼロで割ることもできないんだ。
これらの値は、正常な値ではないよ。プログラムの中で割り算をするときは、以下のように分母がゼロのときは割り算が実行されないようにしておくといいよ。
F11キーでフルスクリーンモード、Escキーで元に戻ります。
DBL_MAX というのは、double 型の変数が格納できる最大の値のことで、関数Devideからこの値が返ってきたら、中で何かエラーが発生した、ということにして使うんだ。分母がゼロのときの対処方法は決め事なので、好きなように決めればいいよ。だから0を返すようにしてもいいんだけど、0だと本当に計算結果が本当に0だったときと区別がつかないから、DBL_MAXという、計算結果として現れにくい、そのコンピュータで表現できる最大の数値を返すのが、1つの良い決め事だよ。DBL_MAXはfloat.hというヘッダーファイルの中で定義されているので、1行目のようにインクルードする必要があるよ。
ちなみに infinityとnanは、math.h というヘッダーファイルの中に定義されていて、isinf()、isnan() という関数で判別できるよ。
新しいことが何個も出てきたけど、DBL_MAX、if文、==とかは、あとの問題で勉強する機会があるよ。
ちなみに infinityとnanは、math.h というヘッダーファイルの中に定義されていて、isinf()、isnan() という関数で判別できるよ。
新しいことが何個も出てきたけど、DBL_MAX、if文、==とかは、あとの問題で勉強する機会があるよ。
初めての方へ:このページは、このサイトで用意しているプログラミング問題の解答と解説のページです。このサイトではブラウザ上からプログラミングができます。会員登録(無料)して、プログラミングしてみませんか?
新規登録
新規登録