关于前端:保留小数点后N位方法

50次阅读

共计 878 个字符,预计需要花费 3 分钟才能阅读完成。

四舍五入保留小数后 n 位

应用 toFixed() 办法

  • 四舍五入为指定的小数位数
  • 返回字符串
  • 小数理论位数不够指定的位数,有余的局部会补 0

自定义转换方法

  • 四舍五入为指定的小数位数
  • 返回数字
  • 小数理论位数不够指定的位数,有余的局部不会补 0

    function roundFun(number, precision) {return Math.round(+number + 'e' + precision) / Math.pow(10, precision);
    }
    // 或
    function roundFun(number, precision) {return Math.round(number * Math.pow(10, precision)) / Math.pow(10, precision);
    }

准确显示小数后 n 位

不补 0

  • 准确保留小数后 n 位
  • 返回数字
  • 小数理论位数不够指定的位数,有余的局部不会补 0
const keepDecimal = (number, precision) => {const regexp = new RegExp(`^\\d+(?:\\.\\d{0,${precision}})?`)
  return Number(number.toString().match(regexp))
}

补 0

  • 准确保留小数后 n 位
  • 返回字符串
  • 小数理论位数不够指定的位数,有余的局部会补 0
const keepDecimal = (number, precision) => {const regexp = new RegExp(`^\\d+(?:\\.\\d{0,${precision}})?`)
  const result = Number(number.toString().match(regexp))
  let numberStr = result.toString()
  let rs = numberStr.indexOf('.')
  if (rs < 0 && precision > 0) {
    rs = numberStr.length
    numberStr += '.'
  }
  while (numberStr.length <= rs + precision) {numberStr += '0'}
  return numberStr
}

正文完
 0