加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

求一个数值的整数次方,不考虑大数的问题

发布时间:2020-12-14 03:05:50 所属栏目:大数据 来源:网络整理
导读:public static double Power(double base,int exponent)? 具体实现请参考一下代码: package cn.gt.algori;/** * 数值的整数次方 不考虑大数的问题 * @author gengtao * */public class train0808_1 {private static boolean invalidInput = false;public st

public static double Power(double base,int exponent)?


具体实现请参考一下代码:
package cn.gt.algori;
/**
 * 数值的整数次方  不考虑大数的问题
 * @author gengtao
 *
 */
public class train0808_1 {

	private static boolean invalidInput = false;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        double number = 2.5;
        int exponent = 5;
        double result = Power(number,exponent);
        if(invalidInput == true){
        	System.out.println("Invalid input!");
        }
        System.out.println(result);
	}
	//判断两个double数据是否相等
    public static boolean equal(double num1,double num2){
    	if((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001)){
    		return true;
    	}else{
    		return false;
    	}
    } 
    
    public static double Power(double base,int exponent){
    	if(equal(base,0.0) && exponent < 0){
    		invalidInput = true;
    		return 0.0;
    	}
    	int absExponent = exponent;
    	if(exponent < 0){
    		absExponent = -exponent;
    	}
    	double result = PowWithExponent(base,absExponent);
    	if(exponent < 0){
    		result = 1.0 / result;
    	}
    	return result;
    }
    //使用递归求解  用右移代替除运算,和1取与代替求余运算。
    public static double PowWithExponent(double base,int absExponent){
    	if(absExponent == 0) return 1.0;
    	if(absExponent == 1) return base;
    	double result = PowWithExponent(base,absExponent >> 1);
    	result *= result;
    	if((absExponent & 1) == 1){
    		result *= base;
    	}
    	return result;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读