解题思路:
这道题看似简单,其实BUG重重。要注意的问题:
1 关于次幂的问题特殊的情况,比如次幂为负数,或者基数为0时等等复杂的情况
2 机器中浮点数的比较是由误差的,因此double类型的比较,不能用简单的a==0来比较。一般的比较方式是,相减的差在一个很小的区间内,我们就认为是相等的。
- public class Solution {
- public double Power(double base, int exponent) {
- double mul=1.0;
- /* 如果exponent = 0 输出1 */
- if(exponent == 0)
- {
- return 1.00000;
- }
- /* 如果base = 0 输出0 */
- if(base >= -0.000001 && base <= 0.000001)
- {
- return 0;
- }
- /* 如果指数大于0 */
- if(exponent > 0)
- {
- for(int index = 0; index < exponent; index++)
- {
- mul *= base;
- }
- }
- else
- {
- exponent = -exponent;
- for(int index = 0; index < exponent; index++)
- {
- mul *= base;
- }
- mul = 1.0/mul;
- }
- return mul;
- }
- }