price.js 2.28 KB
/**
 * 处理数字
 * @param num 输入的数字
 * @param type 过滤的类型 1.正整数且可以为0 2.正数且可以为0
 * @param fixedNum 保留多少位小数 如果type为2,则fixedNum为保留多少位小数
 * @param numType 是否可以输入负数或负小数
 * @private
 */
export function _handleNum(num, type, fixedNum, numType = 1) {
  if (num != null && num != undefined && num != "" && num != "0") {
    var reg = '';
    switch (type) {
      //匹配正整数
      case 1:
        var t = num[0]
        reg = /[^\d]/g;
        //先过滤非数字包括小数点
        num = num.replace(reg, '');
        //取得正整数,去除头部为0的数(如002223)
        num = num.replace(/^0{0,}/, '');
        if (numType && t == '-') {
          num = '-' + num
        }
        break;

        //匹配小数点,保留多少位
      case 2:
        var t = num[0]
        reg = /[^\d\.]/g;
        //先过滤非数字和小数点
        num = num.replace(reg, '');
        if (num[0] == '.') {
          num = '0.'
        }
        //获取第一个小数点出现的位置
        var index = num.indexOf(".");
        if (index != -1) {
          //过滤所有小数点
          num = num.replace(/\./g, '');
          //组合数字,AfterDotNum 为小数点钱数字
          var beforeDotNum = num.substring(0, index)
          //如果为小数并且小数点前有两位数字,取得小数点前全部位数,去除头部为0的数(如002223)
          if (beforeDotNum.length > 1) {
            beforeDotNum = beforeDotNum.replace(/^0{0,1}/, '');
          }
          //组合数字,AfterDotNum 为小数点后数字
          var AfterDotNum = num.substring(index, num.length);
          num = beforeDotNum + "." + AfterDotNum;
          //获取最终结果,如果最终的位数小于fixedNum
          if (fixedNum && AfterDotNum.length > fixedNum) {
            AfterDotNum = AfterDotNum.substr(0, fixedNum);
            var number = num.substring(0, index)
            num = number + "." + AfterDotNum;
          }
        } else {
          //取得正整数,去除头部为0的数(如002223)
          num = num.replace(/^0{0,1}/, '');
        }
        if (numType && t == '-') {
          num = '-' + num
        }

        break;
    }
  }
  return num;
}