美文网首页
每日一题[16]-数值的整数次方

每日一题[16]-数值的整数次方

作者: MAXPUP | 来源:发表于2017-03-14 12:34 被阅读0次

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
    解:
    牛客网的答案,好多都是调用的Math.pow,但是我们都知道,JavaScript算浮点数是有误差的。

    Math.pow(0.01,3)//0.0000010000000000000002
    

    所以还是把小数点换成整数再计算吧。

    function Power(base, exponent)
    {
      var result = base;
      while(exponent>1){
        result = FloatMul(result,base);
        exponent--;
      }
      if(exponent<0){
        while(exponent<1){
          result = FloatDiv(result,base);
          exponent++;
        }
      }
      if(exponent === 0)return 1;
      return result;
    }
    function FloatMul(arg1,arg2)   {
          var m=0,s1=arg1.toString(),s2=arg2.toString();
          try{m+=s1.split(".")[1].length}catch(e){}
          try{m+=s2.split(".")[1].length}catch(e){}
          return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
    }
    function FloatDiv(arg1,arg2){
            var t1=0,t2=0,r1,r2;
            try{t1=arg1.toString().split(".")[1].length}catch(e){}
            try{t2=arg2.toString().split(".")[1].length}catch(e){}
            with(Math){
                r1=Number(arg1.toString().replace(".",""));
    
                r2=Number(arg2.toString().replace(".",""));
                return (r1/r2)*pow(10,t2-t1);
            }
      }
    

    浮点数的加减乘除代码来自
    [庄大虾的博客](http://www.cnblogs.com/slowsoul/archive/2013/06/12/3132821.html
    非常感谢!

    相关文章

      网友评论

          本文标题:每日一题[16]-数值的整数次方

          本文链接:https://www.haomeiwen.com/subject/plocnttx.html