首页 > 其他分享 >utils.js

utils.js

时间:2023-06-05 10:45:35浏览次数:32  
标签:arg1 utils number js toString sum l2 arg2

加减乘除运算

/**
 * @description: 加法运算
 * @param {*} arg1
 * @param {*} arg2
 * @param {*} number 展示小数点后位数
 * @return {*}
 */
export function operationAdd(arg1, arg2, number = 2) {
  let l1 = 0,
    l2 = 0,
    m,
    c;
  try {
    l1 = arg1.toString().split(".")[1].length;
  } catch (e) {}
  try {
    l2 = arg2.toString().split(".")[1].length;
  } catch (e) {}
  c = Math.abs(l1 - l2);
  m = Math.pow(10, Math.max(l1, l2));
  if (c > 0) {
    let cm = Math.pow(10, c);
    if (l1 > l2) {
      arg1 = Number(arg1.toString().replace(".", ""));
      arg2 = Number(arg2.toString().replace(".", "")) * cm;
    } else {
      arg1 = Number(arg1.toString().replace(".", "")) * cm;
      arg2 = Number(arg2.toString().replace(".", ""));
    }
  } else {
    arg1 = Number(arg1.toString().replace(".", ""));
    arg2 = Number(arg2.toString().replace(".", ""));
  }
  const sum = (arg1 + arg2) / m;
  let max = 0;
  try {
    max = sum.toString().split(".")[1].length;
  } catch (error) {}
  return sum.toFixed(number);
  // return max > number ? sum.toFixed(number) : sum;
}

/**
 * @description: 减法运算
 * @param {*} arg1
 * @param {*} arg2
 * @param {*} number 展示小数点后位数
 * @return {*}
 */
export function operationSub(arg1, arg2, number = 2) {
  let l1 = 0,
    l2 = 0,
    m,
    n;
  try {
    l1 = arg1.toString().split(".")[1].length;
  } catch (e) {
    l1 = 0;
  }
  try {
    l2 = arg2.toString().split(".")[1].length;
  } catch (e) {
    l2 = 0;
  }
  m = Math.pow(10, Math.max(l1, l2)); //last modify by deeka //动态控制精度长度
  n = l1 >= l2 ? l1 : l2;
  const sum = (arg1 * m - arg2 * m) / m;
  let max = 0;
  try {
    max = sum.toString().split(".")[1].length;
  } catch (error) {}
  return sum.toFixed(number);
  // return max > number ? sum.toFixed(number) : sum.toFixed(n);
}

/**
 * @description: 乘法运算
 * @param {*} arg1
 * @param {*} arg2
 * @param {*} number 展示小数点后位数
 * @return {*}
 */
export function operationMul(arg1, arg2, number = 2) {
  let m = 0,
    l1 = 0,
    l2 = 0,
    s1 = arg1.toString(),
    s2 = arg2.toString();
  try {
    m += s1.split(".")[1].length;
    l1 = arg1.toString().split(".")[1].length;
  } catch (e) {
    l1 = 0;
  }
  try {
    m += s2.split(".")[1].length;
    l2 = arg2.toString().split(".")[1].length;
  } catch (e) {
    l2 = 0;
  }
  const sum =
    (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) /
    Math.pow(10, m);
  let max = 0;
  try {
    max = sum.toString().split(".")[1].length;
  } catch (error) {}
  return sum.toFixed(number);
  // return max > number ? sum.toFixed(number) : sum;
}

/**
 * @description: 除法运算
 * @param {*} arg1
 * @param {*} arg2
 * @param {*} number 展示小数点后位数
 * @return {*}
 */
export function operationDiv(arg1, arg2, number = 2) {
  let l1 = 0,
    l2 = 0,
    r1,
    r2;
  try {
    l1 = arg1.toString().split(".")[1].length;
  } catch (e) {}
  try {
    l2 = arg2.toString().split(".")[1].length;
  } catch (e) {}
  r1 = Number(arg1.toString().replace(".", ""));
  r2 = Number(arg2.toString().replace(".", ""));
  const sum = (r1 / r2) * Math.pow(10, l2 - l1);
  let max = 0;
  try {
    max = sum.toString().split(".")[1].length;
  } catch (error) {}
  return sum.toFixed(number);
  // return max > number ? sum.toFixed(number) : sum;
}

数字添加千分位分隔符

/**
 * 添加千分位
 * @param {Object} value
 */
export const formatThousands = (value) => {
  if (value === undefined || value === null || value == "0") {
    value = "0.00";
  }
  if (!isNaN(value)) {
    value = value + "";
  }
  let re = /\d{1,3}(?=(\d{3})+$)/g;
  let n1 = value.replace(/^(\d+)((\.\d+)?)$/, function (s, s1, s2) {
    return s1.replace(re, "$&,") + s2;
  });
  return n1;
};

获取几个月前的日期

// 获取几个月前的日期
export function getRecentMonth(monthNum = 0) {
  let date = new Date();
  date.setMonth(date.getMonth() - monthNum, 1);
  return {
    year: date.getFullYear(),
    month: date.getMonth() + 1,
  };
}

 

标签:arg1,utils,number,js,toString,sum,l2,arg2
From: https://www.cnblogs.com/wjian0916/p/17457229.html

相关文章

  • js常用方法
    深度克隆functiondeepClone(source){//判断是否数组或对象if(source.constructor!=Array&&source.constructor!=Object){returnsource}consttargetObj=source.constructor===Array?[]:{}for(letkeyinsource){//判断是否为......
  • validate.js
    校验金额exportconstvalidateMoney=(rule,value,callback)=>{if(value===""){returncallback(newError("不能为空"));}if(value<=0){returncallback(newError("请输入大于0的金额"));}constreg=/^(([......
  • 在elementUI-admin中使用printjs进行打印功能的处理
    1.需要加入依赖npminstallprint-js--save-dev2.通过数据的处理打印表格(推荐)在utils文件夹下创建print.js文件importprintJSfrom"print-js";/** * *@param{ *   title:"",//表名 *   serial:false,//是否需要序号 *   data:[],//......
  • JS字符串转JSON
    1、jQuery插件支持的转换方式: 示例:$.parseJSON(jsonstr);//jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象2、浏览器支持的转换方式(Firefox,chrome,opera,safari,ie)等浏览器:示例:JSON.parse(jsonstr);//可以将json字符串转换成json对象 JSON.stringify(jsonobj);//......
  • vue .js获取checkbox是否选中
    1.html<divclass="weui-cellsweui-cells_checkboxfont14"v-for="iteminitems"><labelclass="weui-cellweui-check__label"><divclass="weui-cell__ftwidth-inherit"><inputtype="checkbox&q......
  • 序列化模块JSON
    序列化模块什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。【一】为什么要有序列化模块比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里然后另一个python程序再从文件里......
  • nodejs express的部署简单记录(不详细)
    1.选用Linux系统2.node测试的包有expressknex3.Linux安装nodejs环境https://github.com/nodesource/distributions4.Linux系统权限(sudo)npm安装pm25.用pm2启动后端服务示例:pm2startindex.mjs6.注意端口号占用7.防火墙打开对应端口号 importexpressfr......
  • JS中创建对象的几种常见的方式
    创建对象方式//方式1varobj1={"name":"方式1"}//方式2varobj2={name:"方式2"}//方式3varobj3=newObject({"name":"方式3"});//方式4varobj4=newObject();obj4.name="方式4"//方式5:通过对象构造器创建对象fu......
  • JS中的异步编程
    目录前言什么是Promise?为什么用fetch?async、await基本使用方法ajax请求自定义请求HTML请求JSON请求ResponsemetadataPostformPostJSONFileupload注意点前言fetch是用来替代传统的XMLHttpRequest的。fetch的优点很多,包括链式调用的语法、返回promise等。什么是Promi......
  • threejs绘制多边形几何体
    threejs绘制多边形 //创建一个立方体几何体varcubeGeometry=newTHREE.BoxGeometry(0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5);//创建一个多边形几何体varpolygonGeometry=newTHREE.Geometry();//创建多边形的顶点数......