1 + 1/3 + 1/5-1/7 +1/9....などのループを実行しようとしています
しかし、それは1として現れ続けます!
私が試してみました
double answer = 1 + 1/3 + 1/5 - 1/7 + 1/9 - 1/11;
displays 1
数学は私がいじって試したように奇妙です
double answer = 1 / 5; //should display 0.2
displays 0!!!!!!!!
1 + 1/3 + 1/5-1/7 +1/9....などのループを実行しようとしています
しかし、それは1として現れ続けます!
私が試してみました
double answer = 1 + 1/3 + 1/5 - 1/7 + 1/9 - 1/11;
displays 1
数学は私がいじって試したように奇妙です
double answer = 1 / 5; //should display 0.2
displays 0!!!!!!!!
整数演算を使用しています。
2つの整数間の演算の結果は、0に丸められた整数になります。
したがって、コードは次のようになります。
double answer = 1 + 0 + 0 - 0 + 0 - 0;
代わりにこれを試してください。
double answer = 1.0 + 1.0/3.0 + 1.0/5.0 - 1.0/7.0 + 1.0/9.0 - 1.0/11.0;
整数リテラルを使用しているためです。これを試して:
double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;
C ++では、ある整数を別の整数で除算すると、整数が得られます。したがって、に1/3
等しい0
。
試す:
double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;
演算は整数定数で機能し、結果はdoubleに変換されます。次のように定数を定義する必要があります。
double answer = 1.0 + 1.0/3.0 + 1.0/5.0 - 1.0/7.0 + 1.0/9.0 - 1.0/11.0;
1.0/3.0 などを試してください。
それ以外の場合、各部分式は整数として解釈されるため、0 と評価されます。