java - 在幂计算中使用 int、double 和 long

标签 java int double long-integer

我无法确定何时使用 int、double 和 long。

我正在计算一个整数的幂并返回结果,只要提供的幂不是负数。

对于作业,我需要使用以下代码来开始:

public static long powerN(int number, int power) {

这是我想到的:

public class PowerCalculator
{
/**
 * Calculate the non-negative power of an integer number. If a negative power is input, the method returns 1.
 * 
 * @param number The number to take power.
 * @param power The power factor to be taken to.
 * @return The calculation result after taking power of the integer number.
 */
    public static long powerN(int number, int power) {

       if (power > 0)
       {  
         double result = (Math.pow(number, power));  
         return result; 
       }
       else 
       {
         return 1; 
       }
    }
}

我知道我搞乱了 int、double 或 long 的使用,但我不知道如何修复它。

最佳答案

等等!如果您自己做,请使用更快的算法,例如 Exponentiation by squaring ,像这样:

long powerN(long number, int power){
    long res = 1;
    long sq = number;
    while(power > 0){
        if(power % 2 == 1){
            res *= sq; 
        }
        sq = sq * sq;
        power /= 2;
    }
    return res;
}

关于java - 在幂计算中使用 int、double 和 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996070/

相关文章:

java - 从组合框中选择一个项目(名称)并自动插入正确的外键

java - 如何使用 seam 获得许可的角色

java - glassfish 服务器如何在没有 servlet 映射的情况下提供静态资源

python - 如何将 Date 对象传递给 mongo 数据库,它在传递 mongo 数据库后转换为 Int64 。如何使用 pymongo 做到这一点

C++:创建结构的二维数组

java - 如何在java中添加自己的数字范围

Java Nice 格式 double

java - 安卓 : How to ask permission to wireless?

java - 为什么要在 for 循环中使用双变量

java 如何测试 double 是否像 9.0 一样以零结尾,如果是,则删除零