1 //浮點數乘除法 2 function muldivfloat(num0,num1,bzstr){ 3 var ln0=getws(num0),//第一個值的的小數位數 4 ln1=getws(num1),//第二個值的的小數位數 5 lnz=Math.max(ln0,ln1),//取得小數位數中的最大數 6 lncz,//小數位數的統計值 7 num0str,//第一個值數字轉字符 8 num1str,//第二個值數字轉字符 9 resultz,//計算結果 10 lnqh;//除法後結果存儲小數 11 12 if(lnz===0){//若是數字本來就是整形,直接執行計算 13 if(bzstr==="*"){ 14 resultz=Number(num0)*Number(num1); 15 }else{ 16 resultz=Number(num0)/Number(num1); 17 } 18 return resultz; 19 } 20 21 num0str=clearpoint(num0,"."); 22 num1str=clearpoint(num1,"."); 23 //根據傳入的符號來判斷是作乘法仍是除法運算 24 if(bzstr==="*"){ 25 lncz=ln0+ln1;//小數位數的總數 26 resultz=addwsfront((Number(num0str)*Number(num1str)).toString(),lncz);//對乘法運算後的結果執行位數補全 27 return Number(resultz.slice(0,-lncz)+"."+resultz.slice(-lncz)); 28 } else { 29 lncz=ln0-ln1;//小數位數的差數 30 resultz=Number(num0str)/Number(num1str); 31 if(lncz===0){//若是除數,被除除數小數位相同,即直接返回計算值 32 return resultz; 33 } 34 lnqh=getws(resultz);//除法計算後可能的小數位數 35 resultz=clearpoint(resultz,".");//除法運算結果去小數位數 36 lncz=lncz+lnqh;//最後應該保留的小數位數 37 if(lncz>0){//若是要保留的小數位數不夠 38 resultz=addwsfront(resultz,lncz);//對計算的結果前補0 39 return Number(resultz.slice(0,-lncz)+"."+resultz.slice(-lncz)); 40 }else {//若是要保留的小數位數小於0 41 lncz=Math.abs(lncz); 42 resultz=addwsback(resultz,lncz);//對計算的結果後補0 43 return Number(resultz); 44 } 45 46 } 47 48 49 } 50 //後補0補夠位數 51 function addwsback(str,len){ 52 for(var i=0;i<len;i++){ 53 str=str+"0"; 54 } 55 return str; 56 } 57 //前置0補夠位數 58 function addwsfront(str,len){ 59 var strlen=str.length, 60 cz=len-strlen, 61 returnstr=""; 62 if(cz<=0){ 63 returnstr=str; 64 } else { 65 for(var i=0;i<cz;i++){ 66 str="0"+str; 67 } 68 returnstr=str; 69 } 70 return returnstr; 71 } 72 //取得小數位數 73 function getws(num){ 74 try { 75 ln=num.toString().split(".")[1].length;//獲取小數位數 76 }catch(e){ 77 ln=0; 78 } 79 return ln; 80 } 81 //補全0 82 function getbq(str,len){ 83 for(var i=0;i<len;i++){ 84 str=str+"0"; 85 } 86 return str; 87 } 88 //浮點型數去小數點轉字符串 89 function clearpoint(num,str){ 90 return num.toString().replace(str,""); 91 }
muldivfloat(被除數,除數,"/")進行除法計算spa
muldivfloat(數字1,數字2,"*")進行乘法計算code
結果運行:blog
返回計算結果字符串