js的算术运算

来源:互联网 发布:创维网络电视价格 编辑:程序博客网 时间:2024/05/16 18:49

做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);elsereturn 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;  } 







0 0
原创粉丝点击