فهرست منبع

优化,加法计算精度处理

DaMowang 2 سال پیش
والد
کامیت
1a6d524c83
3فایلهای تغییر یافته به همراه48 افزوده شده و 47 حذف شده
  1. 0 1
      src/pages/to-pay-list/index.vue
  2. 2 2
      src/request/config.js
  3. 46 44
      src/utils/highPrecision.js

+ 0 - 1
src/pages/to-pay-list/index.vue

@@ -266,7 +266,6 @@ export default {
                 if (type == 1) {
                     b1 = this.$h.Sub(ps, this.userinfo.user_money); //用云宝计算后 待支付价格
                     let sp = this.$h.Sub(wy,um);  //寄卖服务费只能用数智生活余额支付或微信支付
-                    console.log("sp",sp);
                     obligation = b1 > 0 ? b1 : 0; 
                     obligation = this.$h.Add(obligation,sp > 0 ? sp : 0);
                 }

+ 2 - 2
src/request/config.js

@@ -15,6 +15,6 @@ if (process.env.UNI_PLATFORM === "h5") {
 export default apis == 1 ? {
 	Hhost: "https://shop-api.haocha13.cn/",
 } : {
-	// Hhost: "https://shop-api.haocha13.cn/",  //正式接口
-	Hhost: "https://test-api.haocha13.cn/",
+	Hhost: "https://shop-api.haocha13.cn/",  //正式接口
+	// Hhost: "https://test-api.haocha13.cn/",
 }

+ 46 - 44
src/utils/highPrecision.js

@@ -1,47 +1,49 @@
 export default {
-   //加法函数
-   Add: function(arg1, arg2) {
-      let r1,r2,m;
-      // 获取每个参数的小数的位数
-      try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
-      try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
-      // 计算底数为10以最大小数位数为次幂的值
-      m=Math.pow(10,Math.max(r1,r2));
-      // 把所有参数转为整数后相加再除以次幂的值
-      return (arg1*m + arg2*m)/m;
-   },
-   //减法函数
-   Sub: function(arg1, arg2) {
-      let r1,r2,m,n;
-      // 获取每个参数的小数的位数
-      try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
-      try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
-      // 计算底数为10以最大小数位数为次幂的值
-      m=Math.pow(10,Math.max(r1,r2));
-      //精度长度以最大小数位数为长度
-      n=(r1>=r2)?r1:r2;
-      return ((arg1*m-arg2*m)/m).toFixed(n);
-   },
-   //乘法函数
-   Mul: function(arg1, arg2) {
-      arg1 = Number(arg1)
-      arg2 = Number(arg2)
-      let m=0,s1=arg1.toString(),s2=arg2.toString();
-      // 获取所有参数小数位长度之和
-      try{m+=s1.split(".")[1].length}catch(e){}
-      try{m+=s2.split(".")[1].length}catch(e){}
-      // 替换掉小数点转为数字相乘再除以10的次幂值
-      return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
-   },
+    //加法函数
+    Add: function(arg1, arg2) {
+        let r1,r2,m,n;
+        // 获取每个参数的小数的位数
+        try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
+        try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
+        // 计算底数为10以最大小数位数为次幂的值
+        m=Math.pow(10,Math.max(r1,r2));
+        //精度长度以最大小数位数为长度
+        n=(r1>=r2)?r1:r2;
+        // 把所有参数转为整数后相加再除以次幂的值
+        return ((arg1*m + arg2*m)/m).toFixed(n);
+    },
+    //减法函数
+    Sub: function(arg1, arg2) {
+        let r1,r2,m,n;
+        // 获取每个参数的小数的位数
+        try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
+        try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
+        // 计算底数为10以最大小数位数为次幂的值
+        m=Math.pow(10,Math.max(r1,r2));
+        //精度长度以最大小数位数为长度
+        n=(r1>=r2)?r1:r2;
+        return ((arg1*m-arg2*m)/m).toFixed(n);
+    },
+    //乘法函数
+    Mul: function(arg1, arg2) {
+        arg1 = Number(arg1)
+        arg2 = Number(arg2)
+        let m=0,s1=arg1.toString(),s2=arg2.toString();
+        // 获取所有参数小数位长度之和
+        try{m+=s1.split(".")[1].length}catch(e){}
+        try{m+=s2.split(".")[1].length}catch(e){}
+        // 替换掉小数点转为数字相乘再除以10的次幂值
+        return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
+    },
    //除法函数
-   Div: function(arg1, arg2) {
-      let t1=0,t2=0,r1,r2;
-      // 获取每个参数的小数的位数
-      try{t1=arg1.toString().split(".")[1].length}catch(e){}
-      try{t2=arg2.toString().split(".")[1].length}catch(e){}
-      // 把所有参数的小数点去掉转为整数
-      r1=Number(arg1.toString().replace(".",""));
-      r2=Number(arg2.toString().replace(".",""));
-      return (r1/r2)*Math.pow(10,t2-t1);
-   },
+    Div: function(arg1, arg2) {
+        let t1=0,t2=0,r1,r2;
+        // 获取每个参数的小数的位数
+        try{t1=arg1.toString().split(".")[1].length}catch(e){}
+        try{t2=arg2.toString().split(".")[1].length}catch(e){}
+        // 把所有参数的小数点去掉转为整数
+        r1=Number(arg1.toString().replace(".",""));
+        r2=Number(arg2.toString().replace(".",""));
+        return (r1/r2)*Math.pow(10,t2-t1);
+    },
 }