0

这是我的代码:

static int compoundBalance(double db, double dbTwo, double dbThree) {
if(dbThree == 0) return db;
return (1 + dbTwo)*compoundBalance(db, dbTwo, dbThree-1);
}

我得到了这两个错误。我不知道该怎么做。有什么指导吗?谢谢你。

Factorial.java:60: error: possible loss of precision
    if(dbThree == 0) return db;
                            ^
  required: int
  found:    double

Factorial.java:61: error: possible loss of precision
    return (1 + dbTwo)*compoundBalance(db, dbTwo, dbThree-1);
                      ^
  required: int
  found:    double
2 errors
4

1 回答 1

0

您的方法签名表明您在实际返回双精度时返回一个 int。您可以通过将签名更改为:

static double compoundBalance(double db, double dbTwo, double dbThree) {

当您打算返回 6.9 时,此错误会阻止您返回类似 6 的内容。如果您真的想要这种行为,那么您可以将返回值转换为 int,而不是更改签名。

static int compoundBalance(double db, double dbTwo, double dbThree) {
  if(dbThree == 0) return (int)db;
    return (int)((1 + dbTwo)*compoundBalance(db, dbTwo, dbThree-1));
  }
}
于 2013-11-04T00:04:09.900 回答