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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-trees-ui",
3
- "version": "1.0.46",
3
+ "version": "1.0.47",
4
4
  "publicPath": "/ui",
5
5
  "author": "hotent",
6
6
  "private": false,
@@ -310,7 +310,7 @@ const Formulas = {
310
310
  let num = 0
311
311
  args.forEach((item) => {
312
312
  item = Formulas.parseNumber(item)
313
- num += item
313
+ num = Formulas.floatAdd(num, item)
314
314
  })
315
315
  return num
316
316
  },
@@ -693,6 +693,137 @@ const Formulas = {
693
693
  }
694
694
  return new Date(Date.parse(str.replace(/-/g, '/')))
695
695
  },
696
+ //格式化
697
+ toNonExponential(num) {
698
+ if (num == null) {
699
+ return num
700
+ }
701
+ if (typeof num == 'number') {
702
+ var m = num.toExponential().match(/\d(?:\.(\d*))?e([+-]\d+)/)
703
+ return num.toFixed(Math.max(0, (m[1] || '').length - m[2]))
704
+ } else {
705
+ return num
706
+ }
707
+ },
708
+ // 加
709
+ floatAdd(arg1, arg2) {
710
+ arg1 = Number(arg1) || 0
711
+ arg2 = Number(arg2) || 0
712
+ arg1 = Formulas.toNonExponential(arg1)
713
+ arg2 = Formulas.toNonExponential(arg2)
714
+ var r1, r2, m
715
+ try {
716
+ r1 = arg1.toString().split('.')[1].length
717
+ } catch (e) {
718
+ r1 = 0
719
+ }
720
+ try {
721
+ r2 = arg2.toString().split('.')[1].length
722
+ } catch (e) {
723
+ r2 = 0
724
+ }
725
+ m = Math.pow(10, Math.max(r1, r2))
726
+ return (
727
+ (Formulas.floatMultiply(arg1, m) + Formulas.floatMultiply(arg2, m)) / m
728
+ )
729
+ },
730
+ // 减
731
+ floatSub(arg1, arg2) {
732
+ arg1 = Number(arg1) || 0
733
+ arg2 = Number(arg2) || 0
734
+ arg1 = Formulas.toNonExponential(arg1)
735
+ arg2 = Formulas.toNonExponential(arg2)
736
+ var r1, r2, m, n
737
+ try {
738
+ r1 = arg1.toString().split('.')[1].length
739
+ } catch (e) {
740
+ r1 = 0
741
+ }
742
+ try {
743
+ r2 = arg2.toString().split('.')[1].length
744
+ } catch (e) {
745
+ r2 = 0
746
+ }
747
+ m = Math.pow(10, Math.max(r1, r2))
748
+ // 动态控制精度长度
749
+ n = r1 >= r2 ? r1 : r2
750
+ return (
751
+ (Formulas.floatMultiply(arg1, m) - Formulas.floatMultiply(arg2, m)) /
752
+ m
753
+ ).toFixed(n)
754
+ },
755
+ //乘
756
+ floatMultiply(arg1, arg2) {
757
+ arg1 = Number(arg1)
758
+ arg2 = Number(arg2)
759
+ if ((!arg1 && arg1 !== 0) || (!arg2 && arg2 !== 0)) {
760
+ return null
761
+ }
762
+ arg1 = Formulas.toNonExponential(arg1)
763
+ arg2 = Formulas.toNonExponential(arg2)
764
+ var n1, n2
765
+ var r1, r2 // 小数位数
766
+ try {
767
+ r1 = arg1.toString().split('.')[1].length
768
+ } catch (e) {
769
+ r1 = 0
770
+ }
771
+ try {
772
+ r2 = arg2.toString().split('.')[1].length
773
+ } catch (e) {
774
+ r2 = 0
775
+ }
776
+ n1 = Number(arg1.toString().replace('.', ''))
777
+ n2 = Number(arg2.toString().replace('.', ''))
778
+ return (n1 * n2) / Math.pow(10, r1 + r2)
779
+ },
780
+ //除
781
+ floatDivide(arg1, arg2) {
782
+ arg1 = Number(arg1)
783
+ arg2 = Number(arg2)
784
+ if (!arg2) {
785
+ return null
786
+ }
787
+ if (!arg1 && arg1 !== 0) {
788
+ return null
789
+ } else if (arg1 === 0) {
790
+ return 0
791
+ }
792
+ arg1 = Formulas.toNonExponential(arg1)
793
+ arg2 = Formulas.toNonExponential(arg2)
794
+ var n1, n2
795
+ var r1, r2 // 小数位数
796
+ try {
797
+ r1 = arg1.toString().split('.')[1].length
798
+ } catch (e) {
799
+ r1 = 0
800
+ }
801
+ try {
802
+ r2 = arg2.toString().split('.')[1].length
803
+ } catch (e) {
804
+ r2 = 0
805
+ }
806
+ n1 = Number(arg1.toString().replace('.', ''))
807
+ n2 = Number(arg2.toString().replace('.', ''))
808
+ return Formulas.floatMultiply(n1 / n2, Math.pow(10, r2 - r1))
809
+ },
810
+ //余
811
+ floatMod(arg1, arg2) {
812
+ arg1 = Number(arg1)
813
+ arg2 = Number(arg2)
814
+ if (!arg2) {
815
+ return null
816
+ }
817
+ if (!arg1 && arg1 !== 0) {
818
+ return null
819
+ } else if (arg1 === 0) {
820
+ return 0
821
+ }
822
+ let intNum = arg1 / arg2
823
+ intNum = intNum < 0 ? Math.ceil(arg1 / arg2) : Math.floor(arg1 / arg2) // -1.02 取整为 -1; 1.02取整为1
824
+ let intVal = Formulas.floatMultiply(intNum, arg2)
825
+ return Formulas.floatSub(arg1, intVal)
826
+ },
696
827
  getArrayByPath(obj) {
697
828
  let array = []
698
829
  if (!obj.data) return array