我正在构建一些基本程序,作为练习不同编程技术的一种方式。我以为我编写了一个程序来计算指数,但它无法正常工作。
如果我输入整数即可以正常工作。平方(2,5),但(2,4.5)不起作用。
public static double squared(double a, double b) {
double a1 = a;
double sq = 0;
while (b > 1) {
sq = a*a1;
a =sq;
b--;
}
return sq;
}
public static void main(String[] args) {
System.out.println(squared(2,2));
}
如果b
是一个整数,你的程序将按预期工作,因为你的代码假设b
是一个整数。
无论b
是4 ou 4.5,都将计算相同的结果,因为0和0.5都小于1(从而结束循环)。
您的算法适用于整数,但为了使用浮点指数计算功率,您的方法不起作用。
首先,让我们通过你的pow(2, 4.5)
示例来清楚float exponent的含义:
因此,为了计算这一点,首先我们必须将浮点数转换为分数,然后计算功率和平方根。这是可行的,但它非常繁琐,而且它们是更好的解决方案。
如果我们有,b
可以是一个浮点数,A
就是结果,我们可以取两边的对数:
这相当于:
这简化为:
现在,这可以很容易地用Java完成:
public static void main(String args[]) {
double a = 2;
double b = 4.5;
double A = Math.exp(b * Math.log(a));
System.out.println(A);
}
如果您不想使用内置的exp
函数,我们可以使用Newton-Raphson公式来计算它:
其中:!
表示数字的阶乘。您的初始算法可用于计算具有整数指数的pow
的x
。