js加減乘除運演算法封裝
阿新 • • 發佈:2020-12-19
技術標籤:js
//乘法 accMul :function (arg1,arg2) { var me = this; if(typeof arg1 === 'string'){ arg1 = Number(arg1); } if(typeof arg2 === 'string'){ arg2 = Number(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 me.keepDecimals(Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m),2); } , //除法 accDiv : function (a, b) { var me = this; if(typeof a === 'string'){ a = Number(a); } if(typeof b === 'string'){ b = Number(b); } var c, d, e = 0, f = 0; try { e = a.toString().split(".")[1].length; } catch (g) {} try { f = b.toString().split(".")[1].length; } catch (g) {} return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), me.keepDecimals(me.accMul(c / d, Math.pow(10, f - e)),2); }, //加法 accAdd : function(arg1,arg2){ var me = this; if(typeof arg1 === 'string'){ arg1 = Number(arg1); } if(typeof arg2 === 'string'){ arg2 = Number(arg2); } var r1,r2,m; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)) return me.keepDecimals((arg1*m+arg2*m)/m,2); }, //減法 floatSub: function (arg1,arg2){ var me = this; if(typeof arg1 === 'string'){ arg1 = Number(arg1); } if(typeof arg2 === 'string'){ arg2 = Number(arg2); } var r1,r2,m,n; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)); n=(r1>=r2)?r1:r2; return me.keepDecimals(Ext.util.Format.round(((arg1*m-arg2*m)/m), n),2); }, // val要保留的資料,places保留位數,type返回型別(1數字,2字串) keepDecimals : function(val, places, type) { if(typeof type === 'undefined') type = 1; var num = val + ''; var numStart = num.split('.')[0]; var numEnd = num.split('.')[1]; var powVal = Math.pow(10, places); if (numEnd) { num = Math.round(num * powVal) / powVal + '' if (num.split('.')[1]&&num.split('.')[1].length < places) { for (var n = 0; n < places - num.split('.')[1].length; n++) { num += '0' } } } else { num = numStart + '.' for (var n = 0; n < places; n++) { num += '0' } } return type==1?num=num*1:num=num+'' }