ただいま手作業でやるのが面倒なため、プログラムを作り計算をさせようとしました。
プログラム自体は何の問題もなくコンパイルでき、ちゃんと実行もできるのですが、実行結果が思わしくありません。
nanと出てきてしまうのです。
nanとは何なのでしょう??
またこのプログラムの何処を修正すれば、ちゃんとした結果が得られるのでしょうか?
宜しくお願いします。
nanについて
Re:nanについて
途中0で割ったりしていませんか?
>scanf("%f",&b);
bはdoubleなので
scanf("%lf",&b);
ですね。
scanf()では必須です。
ちなみにprintf()では[%f]でも正しく動くはずです。
>scanf("%f",&b);
bはdoubleなので
scanf("%lf",&b);
ですね。
scanf()では必須です。
ちなみにprintf()では[%f]でも正しく動くはずです。
Re:nanについて
ありがとうございます。
scanf("%lf",&b);
に直してみました。
しかし、結果はnanのままです。
途中で0で割るところは出てこないはずなんですけどね....なんででしょう?
scanf("%lf",&b);
に直してみました。
しかし、結果はnanのままです。
途中で0で割るところは出てこないはずなんですけどね....なんででしょう?
Re:nanについて
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;
のように初期化してやる必要があるのだと思います。
0割の結果とか,tan π/2とか,そういう数学的に定義不可能な値の場合に出てきます。
で,コードを見ましたが,mが0になっています。
よって,aがNaNになり,それが伝播してNaNが出力されています。
double m = 1/45;
ではなく,
double m = 1.0 / 45;
とか
double m = 1.0 / 45.0;
のように初期化してやる必要があるのだと思います。