浮點數的乘除

 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

返回計算結果字符串

相關文章
相關標籤/搜索