three-trees-ui 1.0.46 → 1.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2395,7 +2395,7 @@ const Formulas = {
2395
2395
  }
2396
2396
  args.forEach(item => {
2397
2397
  item = Formulas.parseNumber(item);
2398
- num += item;
2398
+ num = Formulas.floatAdd(num, item);
2399
2399
  });
2400
2400
  return num;
2401
2401
  },
@@ -2775,6 +2775,132 @@ const Formulas = {
2775
2775
  }
2776
2776
  return new Date(Date.parse(str.replace(/-/g, '/')));
2777
2777
  },
2778
+ //格式化
2779
+ toNonExponential(num) {
2780
+ if (num == null) {
2781
+ return num;
2782
+ }
2783
+ if (typeof num == 'number') {
2784
+ var m = num.toExponential().match(/\d(?:\.(\d*))?e([+-]\d+)/);
2785
+ return num.toFixed(Math.max(0, (m[1] || '').length - m[2]));
2786
+ } else {
2787
+ return num;
2788
+ }
2789
+ },
2790
+ // 加
2791
+ floatAdd(arg1, arg2) {
2792
+ arg1 = Number(arg1) || 0;
2793
+ arg2 = Number(arg2) || 0;
2794
+ arg1 = Formulas.toNonExponential(arg1);
2795
+ arg2 = Formulas.toNonExponential(arg2);
2796
+ var r1, r2, m;
2797
+ try {
2798
+ r1 = arg1.toString().split('.')[1].length;
2799
+ } catch (e) {
2800
+ r1 = 0;
2801
+ }
2802
+ try {
2803
+ r2 = arg2.toString().split('.')[1].length;
2804
+ } catch (e) {
2805
+ r2 = 0;
2806
+ }
2807
+ m = Math.pow(10, Math.max(r1, r2));
2808
+ return (Formulas.floatMultiply(arg1, m) + Formulas.floatMultiply(arg2, m)) / m;
2809
+ },
2810
+ // 减
2811
+ floatSub(arg1, arg2) {
2812
+ arg1 = Number(arg1) || 0;
2813
+ arg2 = Number(arg2) || 0;
2814
+ arg1 = Formulas.toNonExponential(arg1);
2815
+ arg2 = Formulas.toNonExponential(arg2);
2816
+ var r1, r2, m, n;
2817
+ try {
2818
+ r1 = arg1.toString().split('.')[1].length;
2819
+ } catch (e) {
2820
+ r1 = 0;
2821
+ }
2822
+ try {
2823
+ r2 = arg2.toString().split('.')[1].length;
2824
+ } catch (e) {
2825
+ r2 = 0;
2826
+ }
2827
+ m = Math.pow(10, Math.max(r1, r2));
2828
+ // 动态控制精度长度
2829
+ n = r1 >= r2 ? r1 : r2;
2830
+ return ((Formulas.floatMultiply(arg1, m) - Formulas.floatMultiply(arg2, m)) / m).toFixed(n);
2831
+ },
2832
+ //乘
2833
+ floatMultiply(arg1, arg2) {
2834
+ arg1 = Number(arg1);
2835
+ arg2 = Number(arg2);
2836
+ if (!arg1 && arg1 !== 0 || !arg2 && arg2 !== 0) {
2837
+ return null;
2838
+ }
2839
+ arg1 = Formulas.toNonExponential(arg1);
2840
+ arg2 = Formulas.toNonExponential(arg2);
2841
+ var n1, n2;
2842
+ var r1, r2; // 小数位数
2843
+ try {
2844
+ r1 = arg1.toString().split('.')[1].length;
2845
+ } catch (e) {
2846
+ r1 = 0;
2847
+ }
2848
+ try {
2849
+ r2 = arg2.toString().split('.')[1].length;
2850
+ } catch (e) {
2851
+ r2 = 0;
2852
+ }
2853
+ n1 = Number(arg1.toString().replace('.', ''));
2854
+ n2 = Number(arg2.toString().replace('.', ''));
2855
+ return n1 * n2 / Math.pow(10, r1 + r2);
2856
+ },
2857
+ //除
2858
+ floatDivide(arg1, arg2) {
2859
+ arg1 = Number(arg1);
2860
+ arg2 = Number(arg2);
2861
+ if (!arg2) {
2862
+ return null;
2863
+ }
2864
+ if (!arg1 && arg1 !== 0) {
2865
+ return null;
2866
+ } else if (arg1 === 0) {
2867
+ return 0;
2868
+ }
2869
+ arg1 = Formulas.toNonExponential(arg1);
2870
+ arg2 = Formulas.toNonExponential(arg2);
2871
+ var n1, n2;
2872
+ var r1, r2; // 小数位数
2873
+ try {
2874
+ r1 = arg1.toString().split('.')[1].length;
2875
+ } catch (e) {
2876
+ r1 = 0;
2877
+ }
2878
+ try {
2879
+ r2 = arg2.toString().split('.')[1].length;
2880
+ } catch (e) {
2881
+ r2 = 0;
2882
+ }
2883
+ n1 = Number(arg1.toString().replace('.', ''));
2884
+ n2 = Number(arg2.toString().replace('.', ''));
2885
+ return Formulas.floatMultiply(n1 / n2, Math.pow(10, r2 - r1));
2886
+ },
2887
+ //余
2888
+ floatMod(arg1, arg2) {
2889
+ arg1 = Number(arg1);
2890
+ arg2 = Number(arg2);
2891
+ if (!arg2) {
2892
+ return null;
2893
+ }
2894
+ if (!arg1 && arg1 !== 0) {
2895
+ return null;
2896
+ } else if (arg1 === 0) {
2897
+ return 0;
2898
+ }
2899
+ let intNum = arg1 / arg2;
2900
+ intNum = intNum < 0 ? Math.ceil(arg1 / arg2) : Math.floor(arg1 / arg2); // -1.02 取整为 -1; 1.02取整为1
2901
+ let intVal = Formulas.floatMultiply(intNum, arg2);
2902
+ return Formulas.floatSub(arg1, intVal);
2903
+ },
2778
2904
  getArrayByPath(obj) {
2779
2905
  let array = [];
2780
2906
  if (!obj.data) return array;
@@ -4666,7 +4792,7 @@ if (typeof window !== 'undefined' && window.Vue) {
4666
4792
  /***/ "9224":
4667
4793
  /***/ (function(module) {
4668
4794
 
4669
- module.exports = JSON.parse("{\"a\":\"1.0.46\"}");
4795
+ module.exports = JSON.parse("{\"a\":\"1.0.47\"}");
4670
4796
 
4671
4797
  /***/ }),
4672
4798
 
@@ -2404,7 +2404,7 @@ const Formulas = {
2404
2404
  }
2405
2405
  args.forEach(item => {
2406
2406
  item = Formulas.parseNumber(item);
2407
- num += item;
2407
+ num = Formulas.floatAdd(num, item);
2408
2408
  });
2409
2409
  return num;
2410
2410
  },
@@ -2784,6 +2784,132 @@ const Formulas = {
2784
2784
  }
2785
2785
  return new Date(Date.parse(str.replace(/-/g, '/')));
2786
2786
  },
2787
+ //格式化
2788
+ toNonExponential(num) {
2789
+ if (num == null) {
2790
+ return num;
2791
+ }
2792
+ if (typeof num == 'number') {
2793
+ var m = num.toExponential().match(/\d(?:\.(\d*))?e([+-]\d+)/);
2794
+ return num.toFixed(Math.max(0, (m[1] || '').length - m[2]));
2795
+ } else {
2796
+ return num;
2797
+ }
2798
+ },
2799
+ // 加
2800
+ floatAdd(arg1, arg2) {
2801
+ arg1 = Number(arg1) || 0;
2802
+ arg2 = Number(arg2) || 0;
2803
+ arg1 = Formulas.toNonExponential(arg1);
2804
+ arg2 = Formulas.toNonExponential(arg2);
2805
+ var r1, r2, m;
2806
+ try {
2807
+ r1 = arg1.toString().split('.')[1].length;
2808
+ } catch (e) {
2809
+ r1 = 0;
2810
+ }
2811
+ try {
2812
+ r2 = arg2.toString().split('.')[1].length;
2813
+ } catch (e) {
2814
+ r2 = 0;
2815
+ }
2816
+ m = Math.pow(10, Math.max(r1, r2));
2817
+ return (Formulas.floatMultiply(arg1, m) + Formulas.floatMultiply(arg2, m)) / m;
2818
+ },
2819
+ // 减
2820
+ floatSub(arg1, arg2) {
2821
+ arg1 = Number(arg1) || 0;
2822
+ arg2 = Number(arg2) || 0;
2823
+ arg1 = Formulas.toNonExponential(arg1);
2824
+ arg2 = Formulas.toNonExponential(arg2);
2825
+ var r1, r2, m, n;
2826
+ try {
2827
+ r1 = arg1.toString().split('.')[1].length;
2828
+ } catch (e) {
2829
+ r1 = 0;
2830
+ }
2831
+ try {
2832
+ r2 = arg2.toString().split('.')[1].length;
2833
+ } catch (e) {
2834
+ r2 = 0;
2835
+ }
2836
+ m = Math.pow(10, Math.max(r1, r2));
2837
+ // 动态控制精度长度
2838
+ n = r1 >= r2 ? r1 : r2;
2839
+ return ((Formulas.floatMultiply(arg1, m) - Formulas.floatMultiply(arg2, m)) / m).toFixed(n);
2840
+ },
2841
+ //乘
2842
+ floatMultiply(arg1, arg2) {
2843
+ arg1 = Number(arg1);
2844
+ arg2 = Number(arg2);
2845
+ if (!arg1 && arg1 !== 0 || !arg2 && arg2 !== 0) {
2846
+ return null;
2847
+ }
2848
+ arg1 = Formulas.toNonExponential(arg1);
2849
+ arg2 = Formulas.toNonExponential(arg2);
2850
+ var n1, n2;
2851
+ var r1, r2; // 小数位数
2852
+ try {
2853
+ r1 = arg1.toString().split('.')[1].length;
2854
+ } catch (e) {
2855
+ r1 = 0;
2856
+ }
2857
+ try {
2858
+ r2 = arg2.toString().split('.')[1].length;
2859
+ } catch (e) {
2860
+ r2 = 0;
2861
+ }
2862
+ n1 = Number(arg1.toString().replace('.', ''));
2863
+ n2 = Number(arg2.toString().replace('.', ''));
2864
+ return n1 * n2 / Math.pow(10, r1 + r2);
2865
+ },
2866
+ //除
2867
+ floatDivide(arg1, arg2) {
2868
+ arg1 = Number(arg1);
2869
+ arg2 = Number(arg2);
2870
+ if (!arg2) {
2871
+ return null;
2872
+ }
2873
+ if (!arg1 && arg1 !== 0) {
2874
+ return null;
2875
+ } else if (arg1 === 0) {
2876
+ return 0;
2877
+ }
2878
+ arg1 = Formulas.toNonExponential(arg1);
2879
+ arg2 = Formulas.toNonExponential(arg2);
2880
+ var n1, n2;
2881
+ var r1, r2; // 小数位数
2882
+ try {
2883
+ r1 = arg1.toString().split('.')[1].length;
2884
+ } catch (e) {
2885
+ r1 = 0;
2886
+ }
2887
+ try {
2888
+ r2 = arg2.toString().split('.')[1].length;
2889
+ } catch (e) {
2890
+ r2 = 0;
2891
+ }
2892
+ n1 = Number(arg1.toString().replace('.', ''));
2893
+ n2 = Number(arg2.toString().replace('.', ''));
2894
+ return Formulas.floatMultiply(n1 / n2, Math.pow(10, r2 - r1));
2895
+ },
2896
+ //余
2897
+ floatMod(arg1, arg2) {
2898
+ arg1 = Number(arg1);
2899
+ arg2 = Number(arg2);
2900
+ if (!arg2) {
2901
+ return null;
2902
+ }
2903
+ if (!arg1 && arg1 !== 0) {
2904
+ return null;
2905
+ } else if (arg1 === 0) {
2906
+ return 0;
2907
+ }
2908
+ let intNum = arg1 / arg2;
2909
+ intNum = intNum < 0 ? Math.ceil(arg1 / arg2) : Math.floor(arg1 / arg2); // -1.02 取整为 -1; 1.02取整为1
2910
+ let intVal = Formulas.floatMultiply(intNum, arg2);
2911
+ return Formulas.floatSub(arg1, intVal);
2912
+ },
2787
2913
  getArrayByPath(obj) {
2788
2914
  let array = [];
2789
2915
  if (!obj.data) return array;
@@ -4675,7 +4801,7 @@ if (typeof window !== 'undefined' && window.Vue) {
4675
4801
  /***/ "9224":
4676
4802
  /***/ (function(module) {
4677
4803
 
4678
- module.exports = JSON.parse("{\"a\":\"1.0.46\"}");
4804
+ module.exports = JSON.parse("{\"a\":\"1.0.47\"}");
4679
4805
 
4680
4806
  /***/ }),
4681
4807