数值的整数次方

来源:互联网 发布:广州淘宝代运营诈骗 编辑:程序博客网 时间:2024/05/24 05:03

问题描述:实现函数double power(double base,int exponent),求base的exponent次方。不能使用库函数,同时不需要考虑大数问题

public class Power {    /*     * 问题描述: 实现函数double power(double base,int exponent),求base的exponent     * 次方。不能使用库函数,同时不需要考虑大数问题。     */    /**     * @param args     */    public double power(double base, int exponet) throws Exception {        double result = 0.0;        if (equals(base, 0) && (exponet < 0)) {            throw new Exception("0的负数次幂无意义");        }        if (exponet == 0) {            return 1.0;        }        if (exponet < 0) {            result = powerWithUnsignedExponent(base, -exponet);        } else {            result = powerWithUnsignedExponent(base, exponet);        }        return result;    }    private double powerWithUnsignedExponent(double base, int exponet) {        double result = 1.0;        for (int i = 1; i <= exponet; i++) {            result = result * base;        }        return result;    }    // 由于计算机中表示小数都有误差,不能用等号判断两个小数是否相等。如果两个小数的差的绝对值很小    // 我们就可以认为它们是相等的    private boolean equals(double number1, int number2) {        if ((number1 - number2 > -0.00000001)                && (number1 - number2) < 0.00000001) {            return true;        }        return false;    }    // 写测试:把底数和指数分别设置成正数、负数、0;    public static void main(String[] args) throws Exception {        Power test = new Power();        System.out.println(test.power(2, 3));        System.out.println(test.power(2, 0));        System.out.println(test.power(2, -2));        System.out.println(test.power(0, 3));        System.out.println(test.power(0, 0));        System.out.println(test.power(0, -2));    }}


原创粉丝点击