浮点数的乘除
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(被除数,除数,"/")进行除法计算
muldivfloat(数字1,数字2,"*")进行乘法计算
结果运行:
返回计算结果