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——而不是你想要的结果。你需要做双重除法才能工作。将分数的分子或分母转换为加倍:

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

它将您的除法 ( numer/denom)转换int 为结果中的所有十进制值都将丢失。将其中一个值转换为十进制,例如double在您的计算中,例如下面:

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

你会得到你预期的结果。

于 2012-10-27T03:36:00.023 回答