【发布时间】:2013-10-18 14:51:30
【问题描述】:
我的函数遇到了一些问题,当我回顾我的代码时,我记得我不太确定我是否正确地翻译了这个数学公式。
注意:如果参数 x 和 y 不在区间 [1, 20] 内,则函数应返回 -1。
这是我对该函数的代码:
double irrigationExposure(int x, int y) {
double denominator, fraction, waterexp, wexp;
if (x >= 1 && x <= 20 && y >= 1 && y <= 20) {
denominator = (1 + (abs(x - y)))* (1.0);
fraction = ((IRRIEXPONUM)/(denominator));
waterexp = (fraction) + (2);
if (waterexp <= 10) {
wexp = waterexp;
}
else {
wexp = 2.0;
}
}
else {
wexp = -1.0;
}
return wexp;
}
【问题讨论】:
-
许多事情有点奇怪(例如,为什么在分母中乘以 1?为什么有这么多括号?)但一个特殊的问题 -
IRRIEXPONUM来自哪里? -
IRRIEXPONUM 将是我在此之前声明的常量,因此在这种情况下它将是 10。我在分母中乘以 1,因为将整数除以整数会给我一个整数值但是,如果您查看函数声明,我想要一个 double 作为返回值。所以这就是为什么我在分母中乘以 1.0,使其成为双精度值。
-
是的,我在评论之前就知道了,但这不是重点。如果我看不到所有代码,我无法知道您的代码是否正确,并且仅仅因为您乘以 1.0 是有原因的,并不意味着您以清晰易读的方式实现了目标。乘以一表示您打算乘以一,而演员表表示您打算转换。