• ベストアンサー

計算結果の出力について

df1とdf2の計算結果が普通の計算(機)では5.333と10.666になるのに、以下のプログラムでは6と12になっていしまうのですが、どうしてですか? #include<iostream.h> void main() { int n=7; int m=3; float df1=n-1-2/m; float df2=(m-1)*df1; cout<<df1; cout<<"\n"; cout<<df2; }

質問者が選んだベストアンサー

  • ベストアンサー
  • kamejiro
  • ベストアンサー率28% (136/479)
回答No.1

たぶん float df1=n-1-2/m; の処理の際に、2/m は 2/3 で、0.666666となるべきところが、0になっているのだろうと思います。ゆえに n-1-2/m は 7-1-0となり、df1 は 6 になります。 float df2=(m-1)*df1; の処理では、 (3-1)*6で df2 は 12 になります。df1 と df2 をそれぞれ 5.333 と 10.666 にしたいならば、 float df1=n-1-2/m;  → float df1=float(n)-1.0-2.0/float(m); float df2=(m-1)*df1; → float df2=(float(m)-1.0)*df1; にしてみてはいかがでしょうか。(実際にコンパイル・実行での確認をしていないので何とも言えませんが…。)

backs
質問者

お礼

 回答ありがとうございます。kamejiroさんのいうようにしてみたら、正確に計算されました。