js的算术运算

做js经常要进行一些数学运算,里面的一些的函数能带来一些方便

    1.加法:

function accAdd(arg1, 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 (arg1 * m + arg2 * m) / m;  
}
   2.减法:

function subtr(arg1,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));  
    //last modify by deeka  
    //动态控制精度长度  
    n=(r1>=r2)?r1:r2;  
    return ((arg1*m-arg2*m)/m).toFixed(2);  
}
3.乘法

/**
 ** 乘法函数,用来得到精确的乘法结果
 ** 说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
 ** 调用:accMul(arg1,arg2)
 ** 返回值:arg1乘以 arg2的精确结果
 **/
function accMul(arg1, 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 Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
}
4.除法

/** 
 ** 除法函数,用来得到精确的除法结果
 ** 说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
 ** 调用:accDiv(arg1,arg2)
 ** 返回值:arg1除以arg2的精确结果
 **/
function accDiv(arg1, arg2) {
    var t1 = 0, t2 = 0, r1, r2;
    try {
        t1 = arg1.toString().split(".")[1].length;
    }
    catch (e) {
    }
    try {
        t2 = arg2.toString().split(".")[1].length;
    }
    catch (e) {
    }
    with (Math) {
        r1 = Number(arg1.toString().replace(".", ""));
        r2 = Number(arg2.toString().replace(".", ""));
        return (r1 / r2) * pow(10, t2 - t1);
    }
}
5.把数字转换为中文大写

function DX(n) {
    if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))
        return "数据非法";
    var unit = "千百拾亿千百拾万千百拾元角分", str = "";
        n += "00";
    var p = n.indexOf('.');
    if (p >= 0)
        n = n.substring(0, p) + n.substr(p+1, 2);
        unit = unit.substr(unit.length - n.length);
    for (var i=0; i < n.length; i++)
        str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
    return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
}

6.格式化数字的小数点位数

function fnumber(s,fixed) {
	if(s){
		if(s==""){
			return 0.00;
		}
		s = $.trim(s);
		for(var i = 0; i < s.length; i++) {
			s = s.replace(",", "");
			if(s.indexOf(",") < 0) {
				break;
			}
		}
		if(fixed)
			return parseFloat(s).toFixed(fixed);
		else
			return parseFloat(s);
	}
}


7.给数字加上千分位

//格式化数字为2位小数金额,逗号隔开
function fmoney(s) { 

   var str = parseFloat((s + "").replace(/[^\d\.-]/g, "")) + "";   
   var l = str.split(".")[0].split("").reverse();
   var r = str.split(".")[1];
   var r_num = 0;

   var flag = false;
   if(r != undefined && r.length >= 3 && parseFloat(r.charAt(2)) >= 5) {
	   flag = true;
   }

   if(r != undefined && r.length >= 3) {
	   r = r.substring(0,2);
   }
   if(flag) {
	   var temp = "0." + r;
	   temp = (parseFloat(temp) + 0.01) + "";
	   if(temp.length < 5){
		   r = temp.substring(2);
	   } else {
		   r = temp.substring(2,4);
	   }
	   
   }
   if(r == undefined) {
	   r = "00";
   }
   if(r.length == 1) {
	   r = r + "0";
   }
   t = "";   
   for(i = 0; i < l.length; i ++ )   
   {   
      t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");   
   } 
   var money = t.split("").reverse().join("") + "." + r; 
   if(money.charAt(0) == "-" && money.charAt(1) == ",") {
	   money = money.replace(",","");	
   }
   return money=="0.00"?"0":money;  
} 







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,我可以回答您的问题。要判断右侧的算术运算类型是否为“any"、 "number” "bigint” 或枚举类型,可以使用 JavaScript 的 typeof 运算符来获取实际类型。您可以将右侧的变量传入typeof运算符,然后检查返回值是否为所需类型。对于枚举类型,您可以使用 switch 语句来检查变量是否为预定义的枚举值。希望这可以帮到您! ### 回答2: 要确定算术运算右侧是 "any"、"number"、"bigint" 或枚举类型,需要根据变量的类型和赋予变量的值进行判断。 首先,对于 "any" 类型,它可以代表任意类型的值,包括数值类型、字符串类型等等。在进行算术运算时,可以直接对 "any" 类型的变量进行运算,不需要额外的类型转换。 其次,对于 "number" 类型,它只能代表数值类型的值,包括整数、浮点数等。当需要对变量进行算术运算时,我们可以使用 typeof 运算符来检查变量的类型是否为 "number",如果是,则可以直接进行运算。如果不是 "number" 类型,我们可以考虑使用类型转换将其转换为数值类型后再进行运算。 对于 "bigint" 类型,它只能代表大整数类型的值。在进行算术运算时,如果变量的类型为 "bigint",则可以直接进行大整数运算。 最后,对于枚举类型,它可以表示一组具有命名值的标签集合。在进行算术运算时,通常需要将枚举类型的值转换为数值类型后再进行运算。 总之,要确定算术运算右侧的类型,我们需要根据变量的实际类型和赋予变量的值来判断,并可以通过类型转换来满足运算的要求。 ### 回答3: 要将算术运算的右侧设置为"any"、 "number"、"bigint"或枚举类型,可以通过以下方法实现。 首先,要将右侧设置为"any"类型,只需将其声明为任意数据类型即可。在TypeScript,使用关键字"any"来表示任意类型。例如: let x: any = 10; // 将右侧设置为任意类型any,可以接受任何类型的值 其次,要将右侧设置为"number"类型,只需将其声明为数字型变量即可。在TypeScript,可以使用number关键字来表示数字类型。例如: let x: number = 10; // 将右侧设置为数字类型number,只能接受数字类型的值 要将右侧设置为"bigint"类型,可以使用BigInt函数来创建一个大整数,BigInt类型可以用来表示任意大范围的整数。例如: let x: bigint = BigInt(100); // 将右侧设置为bigint类型,可以接受大范围的整数值 最后,要将右侧设置为枚举类型,可以使用enum关键字来定义一个枚举类型。枚举类型用于定义一组命名常量。例如: enum Colors { Red, Green, Blue, } let color: Colors = Colors.Blue; // 将右侧设置为枚举类型,只能接受枚举定义的值 通过以上方法,可以将算术运算的右侧设置为"any"、 "number"、"bigint"或枚举类型,根据需求选择合适的数据类型来进行声明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值