nanについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マサキ

nanについて

#1

投稿記事 by マサキ » 18年前

ただいま手作業でやるのが面倒なため、プログラムを作り計算をさせようとしました。
プログラム自体は何の問題もなくコンパイルでき、ちゃんと実行もできるのですが、実行結果が思わしくありません。
nanと出てきてしまうのです。
nanとは何なのでしょう??
またこのプログラムの何処を修正すれば、ちゃんとした結果が得られるのでしょうか?
宜しくお願いします。

組木紙織

Re:nanについて

#2

投稿記事 by 組木紙織 » 18年前

途中0で割ったりしていませんか?
>scanf("%f",&b);
bはdoubleなので
scanf("%lf",&b);
ですね。
scanf()では必須です。

ちなみにprintf()では[%f]でも正しく動くはずです。

マサキ

Re:nanについて

#3

投稿記事 by マサキ » 18年前

ありがとうございます。
scanf("%lf",&b);
に直してみました。
しかし、結果はnanのままです。
途中で0で割るところは出てこないはずなんですけどね....なんででしょう?

YuO

Re:nanについて

#4

投稿記事 by YuO » 18年前

NaNはNot a Number,非数のことです。
0割の結果とか,tan π/2とか,そういう数学的に定義不可能な値の場合に出てきます。


で,コードを見ましたが,mが0になっています。
よって,aがNaNになり,それが伝播してNaNが出力されています。

double m = 1/45;
ではなく,
double m = 1.0 / 45;
とか
double m = 1.0 / 45.0;
のように初期化してやる必要があるのだと思います。

組木紙織

Re:nanについて

#5

投稿記事 by 組木紙織 » 18年前

私の環境ではmが0になります。
多分そのせいではないでしょうか。

マサキ

Re:nanについて

#6

投稿記事 by マサキ » 18年前

double m = 1.0 / 45.0;
としたところ上手く作動しました。
こんな初歩的なミスをしてしまい申し訳ないです。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る