/**
     * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。
     * 
     * @param num1加数1 | num2加数2
     */
    numAdd(num1, num2) {
      var r1,r2,m;
      try{
          r1 = num1.toString().split('.')[1].length;
      }catch(e){
          r1 = 0;
      }
      try{
          r2=num2.toString().split(".")[1].length;
      }catch(e){
          r2=0;
      }
      m=Math.pow(10,Math.max(r1,r2));
      return Math.round(num1*m+num2*m)/m;
      // let baseNum, baseNum1, baseNum2;
      // try {
      //     baseNum1 = num1.toString().split(".")[1].length;
      // } catch (e) {
      //     baseNum1 = 0;
      // }
      // try {
      //     baseNum2 = num2.toString().split(".")[1].length;
      // } catch (e) {
      //     baseNum2 = 0;
      // }
      // baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
      // return (num1 * baseNum + num2 * baseNum) / baseNum;
    },
    /**
    * 减法运算,避免数据相减小数点后产生多位数和计算精度损失。
    * 
    * @param num1被减数  |  num2减数
    */
    numSub(num1, num2) {
      let baseNum, baseNum1, baseNum2;
      let precision;// 精度
      try {
          baseNum1 = num1.toString().split(".")[1].length;
      } catch (e) {
          baseNum1 = 0;
      }
      try {
          baseNum2 = num2.toString().split(".")[1].length;
      } catch (e) {
          baseNum2 = 0;
      }
      baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
      precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
      return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
    },
    /**
    * 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。
    * 
    * @param num1被乘数 | num2乘数
    */
    numMulti(num1, num2) {
      let baseNum = 0;
      try {
          baseNum += num1.toString().split(".")[1].length;
      } catch (e) {
      }
      try {
          baseNum += num2.toString().split(".")[1].length;
      } catch (e) {
      }
      return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);
    },
    /**
    * 除法运算,避免数据相除小数点后产生多位数和计算精度损失。
    * 
    * @param num1被除数 | num2除数
    */
    numDiv(num1, num2) {
      let baseNum1 = 0, baseNum2 = 0;
      let baseNum3, baseNum4;
      try {
          baseNum1 = num1.toString().split(".")[1].length;
      } catch (e) {
          baseNum1 = 0;
      }
      try {
          baseNum2 = num2.toString().split(".")[1].length;
      } catch (e) {
          baseNum2 = 0;
      }
      //with (Math) {
          baseNum3 = Number(num1.toString().replace(".", ""));
          baseNum4 = Number(num2.toString().replace(".", ""));
          return (baseNum3 / baseNum4) * Math.pow(10, baseNum2 - baseNum1);
      //}
    },
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐