1

それで、私の課題に質問があります。「小数を追加(1/10)+(2/9)+(3/8)+(4/7)+(5/6)+(6/5)+(7/4)+(8/3 )+(9/2)+(10/1)を合わせて、出力は小数点以下4桁にする必要があります。1と10の値を使用してループを作成しました。正解は出ていないようです。まだ小数点以下の桁数を制限していないので、22.218650 ...などになりますが、正解はありません。私が得ている出力は18.0です。

public class AddThemUp {
  // instance variables - replace the example below with your own

  public static void main(String [] args) {
    int i;
    int numer = 1;
    int denom = 10;
    double addUp = 0.0;

    for (i = 1; i <= 10; i++) {
        addUp = (numer / denom) + addUp;
        numer++;
        denom--;
    }
    System.out.println(addUp);
  }
} 

addUp printlnは、小数点以下の区切り文字を理解する前に、数学が正しく機能しているかどうかを確認するためのものです。ダブルを不適切に使用していますか、それとも数値とデノムもダブルにする必要がありますか?どんな助けでもいただければ幸いです。

4

2 に答える 2

1

あなたは常にintを返すint除算を行っています-あなたが望む結果ではありません。これを機能させるには、二重除算を行う必要があります。分数の分子または分母を2倍にキャストします。

((double) numerator / denominator)
于 2012-10-27T03:32:26.817 に答える
1

除算(numer/denom)をに変換int して、結果のすべての10進値が失われるようにしますdoubleたとえば、以下の計算で、値の1つを10進数に変換します。

 addUp = ((double)numer / denom) + addUp;

期待どおりの結果が得られます。

于 2012-10-27T03:36:00.023 に答える