/**
 * 小数相加
 */
export function dcmAdd(arg1, arg2) {
  if (!arg1 || !arg2) {
    return;
  }
  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 (accMul(arg1, m) + accMul(arg2, m)) / m;
}

/*
 * 相减
 */
export function dcmSub(arg1, arg2) {

  if (!arg1 || !arg2) {
    return;
  }
  return dcmAdd(arg1, -arg2);
}

/*
 * 除法
 */
export function accDiv(arg1, arg2) {
  if (!arg1 || !arg2) {
    return;
  }

  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) { }
  r1 = Number(arg1.toString().replace(".", ""));
  r2 = Number(arg2.toString().replace(".", ""));
  return (r1 / r2) * Math.pow(10, t2 - t1);
}

/*
 * 乘法
 */
export function accMul(arg1, arg2) {
  if (!arg1 || !arg2) {
    return;
  }
  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) { }
  var v = Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
  return toDecimal(v);
}

//保留两位小数
//功能：将浮点数四舍五入，取小数点后2位

export function toDecimal(x) {
  var f = parseFloat(x);
  if (isNaN(f)) {
    return;
  }
  f = Math.round(x * 100) / 100;
  return f;
}
/**
 * 判断变量是否为空，
 * @param  {[type]}  param 变量
 * @return {Boolean}      为空返回true，否则返回false。
 */
export function isEmpty(param) {
  if (param) {
    let param_type = typeof (param);
    if (param_type == 'object') {
      //要判断的是【对象】或【数组】或【null】等
      if (typeof (param.length) == 'undefined') {
        if (JSON.stringify(param) == "{}") {
          return true;//空值，空对象
        }
      } else if (param.length == 0) {
        return true;//空值，空数组
      }
    } else if (param_type == 'string') {
      //如果要过滤空格等字符
      let new_param = param.trim();
      if (new_param.length == 0) {
        //空值，例如:带有空格的字符串" "。
        return true;
      }
    } else if (param_type == 'boolean') {
      if (!param) {
        return true;
      }
    } else if (param_type == 'number') {
      if (!param) {
        return true;
      }
    }
    return false;//非空值
  } else {
    //空值,例如：
    //(1)null
    //(2)可能使用了js的内置的名称，例如：var name=[],这个打印类型是字符串类型。
    //(3)空字符串''、""。
    //(4)数字0、00等，如果可以只输入0，则需要另外判断。
    return true;
  }
}
