Java将一系列分数加在一起

时间:2012-10-27 03:31:22

标签: java double fractions

所以,我的任务中有一个问题。这是“添加分数(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只是为了看数学是否正常工作。我是不正确地使用双倍还是数字和面额也应该加倍?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

你正在进行int division,总是返回一个int - 而不是你想要的结果。您需要执行双重划分才能使用此功能。将分数的分子或分母转换为加倍:

((double) numerator / denominator)

答案 1 :(得分:1)

将您的分部(numer/denom)转换为int ,以便结果中的所有小数值都丢失。将其中一个值转换为十进制,例如您计算中的double例如下面:

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

您将获得预期的结果。