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/lib/three-trees-ui.common.js +128 -2
- package/lib/three-trees-ui.umd.js +128 -2
- package/lib/three-trees-ui.umd.min.js +1 -1
- package/package.json +1 -1
- package/src/directive/formulas.js +132 -1
package/package.json
CHANGED
|
@@ -310,7 +310,7 @@ const Formulas = {
|
|
|
310
310
|
let num = 0
|
|
311
311
|
args.forEach((item) => {
|
|
312
312
|
item = Formulas.parseNumber(item)
|
|
313
|
-
num
|
|
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
|