zoukankan      html  css  js  c++  java
  • 数值的整数次方

    题目描述

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
     
    基本思想:首先考虑一下所有可能的情况,以及边界条件。
    1. 指数为正数,正常算出次方的结果。
    2. 指数为负数的一般情况:先对指数求绝对值,然后算出次方的结果,再取倒数。
    3. 指数为负数的特殊情况:底数为0。
    4. 指数为0,底数为0的情况。
     
    在这里,设置了一个全局变量global来标识是否出错。当输入值为非法输入时,返回值为0,将global的值值为true。正常的返回值为0的情况下 ,global的值为false;
    另外,判断底数base是不是等于0时,不能直接写成base == 0,因为在计算机内表示小数时都有误差。判断两个小数是否相等,只能判段它们之差的绝对值是不是在一个很小的范围内。如果两个数的差值很小,就可以认为他们相等。这也是equal()函数存在的意义。
    #include <iostream>
    #include <algorithm>
    #include "string.h"
    #include "stdio.h"
    #include <vector>
    #include <deque>
    #include <stack>
    #include <map>
    #include <utility>
    #include "math.h"
    using namespace std;
    bool global = false;
    class Solution {
    public:
        double Power(double base, int exponent) {
            if(base == 0.0&&exponent == 0.0)
                return 0.0;
            unsigned int absexponent = (unsigned int) (exponent);
            if(exponent<0)
            {
                if(equal(base,0.0))
                {
                    global = true;
                    return 0.0;
                }
                absexponent = (unsigned int)(-exponent);
            }
            double result = PowerExponent(base,absexponent);
            if(exponent<0)
                result = 1.0/result;
            return result;
        }
    
        double PowerExponent(double base,int absexponent)
        {
            double result = 1.0;
            for(int i=0;i<absexponent;i++)
            {
                result*=base;
            }
            return result;
        }
    
        bool equal(double num1,double num2)
        {
            if((num1-num2>-0.0000001)&&(num1-num2<0.0000001))
                return true;
            else
                return false;
        }
    };
    int main()
    {
        Solution solution;
        double count = solution.Power(0,-1);
        cout<<count<<endl;
        cout<<global<<endl;
    }
     
  • 相关阅读:
    mysql数据库(1)
    通过全局异常处理机制实现接口参数校验返回指定返回类型
    http接口安全校验
    java 锁机制介绍
    通过反射获取类的所有属性值拼接成字符串工具类
    Mybatis中出现java.sql.SQLException: 无效的列类型: 1111
    判断两个Long相等
    jwt工具类
    mybatis #{}和${}的区别是什么
    报错解决NoSuchMethod。。。
  • 原文地址:https://www.cnblogs.com/omelet/p/6653100.html
Copyright © 2011-2022 走看看