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

给定一个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
非常感谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容