zoukankan      html  css  js  c++  java
  • 面试题11:数值的整数次方

    要注意的问题:

    1. 指数为0或者是负数

    2. 判断小数误差切记不能用 == ,因为计算机内表示小数时(包括float和double型小数)都有误差。判断两个小数是否相等,只能判断它们之差的绝对值是否在一个很小的范围内

     1 bool g_InvalidInput = false;
     2 bool equal(double num1, double num2);
     3 double PowerWithUnsignedExponent(double base, unsigned int exponent);
     4  
     5 double Power(double base, int exponent)
     6 {
     7     g_InvalidInput = false;
     8  
     9     if(equal(base, 0.0) && exponent < 0)
    10     {
    11         g_InvalidInput = true;
    12         return 0.0;
    13     }
    14  
    15     unsigned int absExponent = (unsigned int)(exponent);
    16     if(exponent < 0)
    17         absExponent = (unsigned int)(-exponent);
    18  
    19     double result = PowerWithUnsignedExponent(base, absExponent);
    20     if(exponent < 0)
    21         result = 1.0 / result;
    22  
    23     return result;
    24 }
    25  
    26 
    27 double PowerWithUnsignedExponent(double base, unsigned int exponent)
    28 {
    29     double result = 1.0;
    30     /
    31     for(int i = 1; i <= exponent; ++i)
    32         result *= base;
    33  
    34     return result;
    35 }
    36 
    37 bool equal(double num1, double num2)
    38 {
    39     if((num1 - num2 > -0.0000001)
    40         && (num1 - num2 < 0.0000001))
    41         return true;
    42     else
    43         return false;
    44 }
  • 相关阅读:
    day74作业
    day072作业
    Serializer类
    day067作业
    day066作业
    day065作业
    django
    jQuery
    JavaScript
    mediaplayer state
  • 原文地址:https://www.cnblogs.com/raichen/p/5639967.html
Copyright © 2011-2022 走看看