vue2移动端之全局精度处理计算工具函数

该文章介绍了在JavaScript中处理数值运算精度问题的mathUtils.js工具文件,包含加法、减法、乘法和除法四个函数,用于避免计算时的小数点后多余位数和精度损失。这些函数被引入到Vue.js项目中,作为全局方法使用。
摘要由CSDN通过智能技术生成

1.utils工具函数文件夹下新建文件mathUtils.js

/**
*加法运算,避免数据相加小数点后产生多位数和计算精度损失
*/
export function numAdd(num1 , num2){
  var r1,r2,m;
  try{
    r1 = num1.toString().split('.')[1].length;
  }catch(e){
    r1 = 0;
  }
  try{
    r2=num2.toString().split('.')[1].length;
  }catch(e){
    r2 = 0;
  }
  m = Math.pow(10,Math.max(r1,r2));
  return Math.round(num1*m+num2*m)/m;
}
/**
*减法运算
*/
export function numSub(num1,num2){
  let baseNum, baseNum1, baseNum2;
  let precision;
  try{
    baseNum1 = num1.toString().split('.')[1].length;
  }catch(e){
    baseNum1 = 0;
  }
  try{
    baseNum2 = num2.toString().split('.')[1].length;
  }catch(e){
    baseNum2 = 0;
  }
  baseNum = Math.pow(10,Math.max(baseNum1,baseNum2));
  precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
  return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
}
/**
*乘法运算
*/
export function numMulti(num1,num2){
  let baseNum = 0;
  try{
   baseNum += num1.toString().split('.')[1].length;
  }catch(e){
  }
  try{
    baseNum += num2.toString().split('.')[1].length;
  }catch(e){
  }
  return Number(num1.toString.replace(".","")) * Number(num2.toString.replace(".","")) / Math.pow(10, baseNum);
}
/**
*除法运算
*/
export function numDiv(num1, num2){
  let baseNum1 = 0, baseNum2 = 0;
  let baseNum3, baseNum4;
  try{
    baseNum1 = num1.toString().split('.')[1].length;
  }catch(e){
    baseNum1 = 0;
  }
  try{
    baseNum2 = num2.toString().split('.')[1].length;
  }catch(e){
    baseNum2 = 0;
  }
  baseNum3 = Number(num1.toString.replace(".",""));
  baseNum4 = Number(num2.toString.replace(".",""));
  return (baseNum3 / baseNum4) * Math.pow(10, baseNum2 - baseNum1);
}

2.main.js入口文件引入

//引入数学精度处理
import {numAdd, numDiv, numMulti, numSub} from './utils/mathUtils.js';

//设置全局精度处理方法
Vue.prototype.$numAdd = numAdd
Vue.prototype.$numSub = numSub
Vue.prototype.$numMulti = numMulti
Vue.prototype.$numDiv = numDiv 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值