-1

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!!!!!!!!
4

5 に答える 5

7

整数演算を使用しています。

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;
于 2013-03-07T17:50:25.347 に答える
3

整数リテラルを使用しているためです。これを試して:

double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;
于 2013-03-07T17:50:54.830 に答える
2

C ++では、ある整数を別の整数で除算すると、整数が得られます。したがって、に1/3等しい0

試す:

double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;
于 2013-03-07T17:50:31.467 に答える
2

演算は整数定数で機能し、結果は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;
于 2013-03-07T17:51:12.203 に答える
2

1.0/3.0 などを試してください。

それ以外の場合、各部分式は整数として解釈されるため、0 と評価されます。

于 2013-03-07T17:51:37.230 に答える