2021-08-09 精度处理


/**
 * @param {*}, value
 * @param {number}, num, 数值精度
 * @param {boolean}, boolToNumber, 布尔值转成0/1
 */
function formatnumber2(value, num, boolToNumber = false) {
  if (isEmpty(value)) {
    return ''
  }

  value = value.toString().trim()

  // 是否是布尔值
  if (/^(true|false)$/.test(value)) {
    if (boolToNumber) {
      if (value === 'true') {
        return 1
      } else {
        return 0
      }
    } else {
      return value
    }
  } else if (/(^-?[0-9]+(\.[0-9]*)?$)|(^-?\.[0-9]+$)|(^-?[0-9]+e[0-9]+$)/.test(value)) {
    // 匹配是否是有效数字,含科学计数法
    let a = value
    let b = 0
    b = a.indexOf('.')
    let val = Number(a)
    if (num === 0) { //当精度为0
      if (val >= 0) {
        if (b !== -1 && val >= 1) {
          a = a.substring(0, b) //取整
        } else { //四舍五入
          if (val > 0 && val < 1) {
            a = Math.round(val)
          }
        }
      } else { //负数
        if (b !== -1 && val <= -1) { //有小数点
          a = a.substring(0, b) //取整
        } else { //四舍五入
          if (val < 0 && val > -1) {
            a = Math.round(val)
            if (-a === 0) {
              a = 0
            }
          }
        }
      }
    } else if (num) {//当精度不为0
      if (b !== -1) { //有小数点
        a = a.substring(0, b + num + 1)
      }
    }

    return a
  }

  return value
}

你可能感兴趣的:(2021-08-09 精度处理)