【问题标题】:Java adding series of fractions togetherJava将一系列分数加在一起
【发布时间】:2012-10-27 03:31:22
【问题描述】:

所以,我的作业中有一个问题。它是“添加分数 (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 只是在我尝试找出小数位分隔符之前查看数学是否正常工作。我是否不正确地使用了双精度数,或者数字和名称也应该是双精度数?任何帮助将不胜感激。

【问题讨论】:

    标签: java double fractions


    【解决方案1】:

    您正在执行 int 除法,而 总是 返回一个 int - 不是您想要的结果。您需要进行 双除法 才能使其正常工作。将分数的分子或分母转换为双精度:

    ((double) numerator / denominator)
    

    【讨论】:

    • 太棒了!知道我在手术中遗漏了一些东西。谢谢一堆。如果 numer 和 denom 开始时是双倍的,它会起作用吗?
    • @user1588867:那么你的 for 循环可能会搞砸。最好将自然是 int 的内容保留为 int,并在需要时转换为 double。
    • 谢谢。改变了它,它现在可以工作了。刚刚使用了 DecimalFormat 类,现在可以正确打印所有内容。
    【解决方案2】:

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

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

    你会得到你预期的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2017-11-19
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多