我有两种方法:权力和要素:
public static long pow(int x, int n) {
long p = x;
for (int i = 1; i < n; i++) {
p *= x;
}
return p;
}
public static long fact(int n) {
long s = n;
for (int i = 1; i < n; i++ ) {
s *= i;
}
return s;
}
页: 1 当我想在评价Exponential function i 得出与Math.exp(x)比较的错误结果。 我的法典:
public static void exp(int x, double eps) {
int i = 1;
double pow = 1.0;
double fact = 1.0;
double sum = 0.0;
double temp;
do {
temp = pow/fact;
sum += temp;
pow = pow(x, i);
fact = fact(i);
i++;
}
while (temp > eps);
System.out.println("Check: " + Math.exp(x));
System.out.println("My: " + sum);
}
public static void main() {
int x = 10;
double eps = 0.0000000000001;
exp(x, eps);
}
x=10的产出是:
检查:22026.465794806718
我:21798.734894914145
较大的X,“精度损失”越大(并非确切的,因为你可以真正称其准确......)。
当方法/power和:/strong>返回double时,产出是正确的。 谁能解释我如何工作?
<方法>pow和fact>必须很长一段时间才能返回,我必须在<>exp上加以使用(联合任务)。