数值的整数次方

59 篇文章 0 订阅
54 篇文章 0 订阅

问题描述:实现函数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));

    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值