2 回答
TA贡献1946条经验 获得超3个赞
b
如果是整数,您的程序将按预期工作,因为您的代码假定b
是整数。
无论是 4 还是 4.5,都会计算相同的结果b
,因为 0 和 0.5 都小于 1(从而结束循环)。
TA贡献1851条经验 获得超3个赞
您的算法适用于整数,但是为了使用浮点指数计算幂,您的方法将不起作用。
首先,让我们通过以下示例来明确浮点指数的含义pow(2, 4.5):
2^{4.5} = 2^{\frac{9}{2}} =\sqrt[2]{2^{4}}
所以为了计算这个,首先我们必须将浮点数转换为分数,然后计算幂和平方根。这是可行的,但它非常乏味,而且它们是更好的解决方案。
如果我们有A = x^{b}, whereb可以是浮点数并且A是结果,我们可以取两边的对数:
\log(A) = b \log(x)
这相当于:
e^{\log(A)} = e^{b\log(x)}
这简化为:
A = e^{b\log(x)}
现在这可以很容易地在 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 公式来计算:
e^{x} = 1 + x/1! + x^{2}/2! + x^{3}/3!...
其中:!表示一个数的阶乘。您的初始算法可用于计算pow具有x整数指数的 。
添加回答
举报