保留小数点后N位方法

四舍五入保留小数后 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
}

作者:时倾原文地址:https://segmentfault.com/a/1190000043848821

%s 个评论

要回复文章请先登录注册