我为指数编写的这个基本程序只适用于整数 - 我做错了什么?

问题描述 投票:0回答:2

我正在构建一些基本程序,作为练习不同编程技术的一种方式。我以为我编写了一个程序来计算指数,但它无法正常工作。

如果我输入整数即可以正常工作。平方(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));
}
java math exponent
2个回答
2
投票

如果b是一个整数,你的程序将按预期工作,因为你的代码假设b是一个整数。

无论b是4 ou 4.5,都将计算相同的结果,因为0和0.5都小于1(从而结束循环)。


2
投票

您的算法适用于整数,但为了使用浮点指数计算功率,您的方法不起作用。

首先,让我们通过你的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公式来计算它:

其中:!表示数字的阶乘。您的初始算法可用于计算具有整数指数的powx

© www.soinside.com 2019 - 2024. All rights reserved.