关于js开发中保留小数位计算函数(以向上取整或…
2019-03-10 11:54:11来源:博客园 阅读 ()
前端工作中经常遇到数字计算保留小数问题,由于不是四舍五入的方式不能使用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 }
注:本方法对采用科学计数法的数字不做处理直接返回
另:两个函数十分类似,根据自己需求合并优化即可
如发现问题,欢迎指教
原文链接:https://www.cnblogs.com/lylszo/p/10497038.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 关于jQuery UI 使用心得及技巧 2020-03-29
- jQuery插件开发全解析 2020-03-25
- JS简单去除数组中重复项的方法 2020-03-16
- vue.js开发环境搭建教程 2020-03-16
- javascript 中关于array的常用方法详解 2020-03-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash