保留小数点后有效数字4位
保留小数点后有效数字4位,处理小数位过多,大数运算的结果。
注意:如果数字有7.100096,会返回 7.1000 =>7.1 (小数点后四位有效数字,0去掉
// 去除多余的0保留特定小数有效数字 export function effective(val: any,nums=4) {//nums 默认保留四位有效数字 if (!val) return val; val = String(val); if (val.includes('e')) { val = toolNumber(val) } let dot = val.includes("."); if (val == 0 || val === "undefined") { return "0"; } if (dot) { let array = val.split(".")[1].split(""); let start = array.findIndex((item: any)=>item!='0'); let tempVal = val.slice(0, start+nums + val.split(".")[0].length + 1); let str = String(parseFloat(tempVal)); return str.includes('e') ? tempVal : clearZoo(tempVal); //去除尾部多余的0 } else { return val; } } const toolNumber =(num_str) => { num_str = num_str.toString(); if (num_str.indexOf("+") != -1) { num_str = num_str.replace("+", ""); } if (num_str.indexOf("E") != -1 || num_str.indexOf("e") != -1) { var resValue = "", power = "", result = null, dotIndex = 0, resArr = [], sym = ""; var numStr = num_str.toString(); if (numStr[0] == "-") { // 如果为负数,转成正数处理,先去掉‘-’号,并保存‘-’. numStr = numStr.substr(1); sym = "-"; } if (numStr.indexOf("E") != -1 || numStr.indexOf("e") != -1) { var regExp = new RegExp( "^(((\\d+.?\\d+)|(\\d+))[Ee]{1}((-(\\d+))|(\\d+)))$", "ig" ); result = regExp.exec(numStr); if (result != null) { resValue = result[2]; power = result[5]; result = null; } if (!resValue && !power) { return false; } dotIndex = resValue.indexOf(".") == -1 ? 0 : resValue.indexOf("."); resValue = resValue.replace(".", ""); resArr = resValue.split(""); if (Number(power) >= 0) { var subres = resValue.substr(dotIndex); power = Number(power); //幂数大于小数点后面的数字位数时,后面加0 for (var i = 0; i <= power - subres.length; i++) { resArr.push("0"); } if (power - subres.length < 0) { resArr.splice(dotIndex + power, 0, "."); } } else { power = power.replace("-", ""); power = Number(power); //幂数大于等于 小数点的index位置, 前面加0 for (var i = 0; i < power - dotIndex; i++) { resArr.unshift("0"); } var n = power - dotIndex >= 0 ? 1 : -(power - dotIndex); resArr.splice(n, 0, "."); } } resValue = resArr.join(""); return sym + resValue; } else { return num_str; } }
不停学习,热爱是源源不断的动力。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通