目录
前言
一、题目
给定⼀个 double 类型的浮点数 base 和 int 类型的整数 exponent 。求 base 的 exponent 次⽅。
二、程序
注意:由于 计算 机表示小数(包括 float 和 double 型⼩数)都有误差,我们不能直接⽤等号( == )判断两个⼩数是否相等。一般来说,两个小数的差的绝对值小于10e-7,我们 就可以认为它们相等。
为了降低程序复杂度,用 base² 代替 base 代入运算。
1.头文件
#include <iostream>
#include <cmath>
using namespace std;
2.类和主函数
class solution
{
public:
double power(double base,int exponent)
{
if(equal(base,0.0)) return 0.0;
int absExponent=fabs(exponent);
double result = PowerWithAbsExponent(base,absExponent);
if(exponent < 0) result = 1.0 / result;
return result;
}
private:
bool equal(double num1,double num2)
{
if(fabs(num1-num2) < 1.0e-7)
return true;
else return false;
}
double PowerWithAbsExponent(double base,int absExponent)
{
double result=1;
double dou_base=base*base;
if(absExponent==0) result=1;
if(absExponent==1) result=base;
if(absExponent%2==0)
{
for(int i=1;i<=absExponent/2;i++)
result*=dou_base;
}
else
{
for(int i=1;i<=absExponent/2;i++)
result*=dou_base;
result*=base;
}
return result;
}
};
int main()
{
int n,exponent;
double base;
solution stu;
cout<<"请输入double类型的浮点数base\n";
cin>>base;
cout<<"请输入int类型的整数exponent\n";
cin>>exponent;
cout<<"base的exponent次方为:\n";
double result=stu.power(base,exponent);
cout<<result;
}