刷题平台
牛客网
题目
给定一个double类型得浮点数base和int类型得整数exponent。求base得exponent次方。
解题思路
当指数为正时,就是正常得求解方法。指数为负时,则是按正值的倒数。若底数为 0 ,则直接返回 0 .
此时要注意:用计算机表示小数(float和double)都有误差,不能直接用等号(==)判断两个小数是否相等。如果两个小数的差的绝对值很小,比如小于0.0000001,就可以认为他们相等。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Solution { public: double Power(double base, int exponent) { if (equal(base, 0.0) && exponent == 0) return -1; if (equal(base, 0.0)) return 0.0; double result = 1; for (int i = 0; i < abs(exponent); i++) { result *= base; } if (exponent > 0) result = result; else result = 1/result; return result; } private: bool equal(double num1, double num2) { if (num2 - num1 < 0.0000001 && (num1 - num2) < 0.0000001) return true; else return false; } };
|
注意:
当使用了equal()函数来判断小数是否相等时,与直接用等号(==)时,计算时间多了 1ms.(此结果只是本人自己运行的结果,不具备普遍性,仅供参考)
参考博文链接:https://cuijiahua.com/blog/2017/11/basis_12.html