給定一個(gè)double類型的浮點(diǎn)數(shù)base和int類型的整數(shù)exponent镊折。求base的exponent次方鹦筹。
解:
牛客網(wǎng)的答案拖刃,好多都是調(diào)用的Math.pow删壮,但是我們都知道,JavaScript算浮點(diǎn)數(shù)是有誤差的兑牡。
Math.pow(0.01,3)//0.0000010000000000000002
所以還是把小數(shù)點(diǎn)換成整數(shù)再計(jì)算吧央碟。
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);
}
}
浮點(diǎn)數(shù)的加減乘除代碼來自
[莊大蝦的博客](http://www.cnblogs.com/slowsoul/archive/2013/06/12/3132821.html)
非常感謝!