标签:power
double和float类型小数在计算机中的存储都不精确,所以如果两个数的误差很小时则认为它们相等
class PowerTest{
public:
double Power(double base, int exp)
{
IsInvalied = false;
//如果底数为0且指数小于0,则会导致1除以0,输入非法
if (Equal(base, 0.0) && exp < 0){ IsInvalied = true; return 0;}
else if (Equal(base, 0.0))return 0.0;
//true表示exp为正,false表示exp为负
bool symbol = true;
if (exp < 0){ symbol = false; exp *= (-1); }
double ret = PowerExp(base,exp);
if (symbol == false){ ret = 1.0 / ret; }
return ret;
}
private:
double PowerExp(double base,int exp)
{
double ret=1.0;
while (exp>0){
ret *= base;
--exp;
}
return ret;
}
//浮点数大小的比较
bool Equal(double num1, double num2)
{
if (num1 - num2 > -0.0000001&&num1 - num2 < 0.0000001)
return true;
else
return false;
}
private:
bool IsInvalied;//判断输入参数是否非法
};《完》
本文出自 “零蛋蛋” 博客,谢绝转载!
标签:power
原文地址:http://lingdandan.blog.51cto.com/10697032/1906074