栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

关于js开发中保留小数位计算函数(以向上取整或向下取整的方式保留小数)

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于js开发中保留小数位计算函数(以向上取整或向下取整的方式保留小数)

前端工作中经常遇到数字计算保留小数问题,由于不是四舍五入的方式不能使用toFixed函数,本文采用正则表达式匹配字符串的方式,解决对数字的向上或向下保留小数问题:

1、向上保留小数(只要目标小数位后有有效数字就进1,保证计算后的数值一定不小于原数值)

function upFixed (num, fix) {  // num为原数字,fix是保留的小数位数
  let result = '0'  if (Number(num) && fix > 0) { // 简单的做个判断
    fix = +fix || 2
    num = num + ''    if (/e/.test(num)) { // 如果是包含e字符的数字直接返回
      result = num
    } else if (!/./.test(num)) { // 如果没有小数点
      result = num + `.${Array(fix + 1).join('0')}`
    } else { // 如果有小数点
      num = num + `${Array(fix + 1).join('0')}`
      let reg = new RegExp(`-?\d*\.\d{0,${fix}}`)
      let floorStr = reg.exec(num)[0]      if (+floorStr >= +num) {
        result = floorStr
      } else {
        let floorNumber = +floorStr + +`0.${Array(fix).join('0')}1`
        let point = /./.test(floorNumber + '') ? '' : '.'
        let floorStr2 = floorNumber + point + `${Array(fix + 1).join('0')}`
        result = reg.exec(floorStr2)[0]
      }
    }
  }  return result
}

2、向下保留小数(目标小数位后的数字直接舍弃,保证计算后的数值一定不大于原数值)

function downFixed (num, fix) {  // num为原数字,fix是保留的小数位数
  let result = '0'  if (Number(num) && fix > 0) { // 简单的做个判断
    fix = +fix || 2
    num = num + ''    if (/e/.test(num)) { // 如果是包含e字符的数字直接返回
      result = num
    } else if (!/./.test(num)) { // 如果没有小数点
      result = num + `.${Array(fix + 1).join('0')}`
    } else { // 如果有小数点
      num = num + `${Array(fix + 1).join('0')}`
      let reg = new RegExp(`-?\d*.\d{0,${fix}}`)
      result = reg.exec(num)[0]
    }
  }  return result
}


注:本方法对采用科学计数法的数字不做处理直接返回

另:两个函数十分类似,根据自己需求合并优化即可

 作者:lylszo

原文链接:https://www.cnblogs.com/lylszo/p/10497038.html


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/246347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号