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
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容