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+''
    }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值