-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathmath.go
More file actions
115 lines (100 loc) · 3.36 KB
/
math.go
File metadata and controls
115 lines (100 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package payment
import "github.com/admpub/decimal"
// ==== 返回 string ====
// CutFloat 非四舍五入的方式保留小数位数
// * money 金额
// * precision 小数位数
func CutFloat(money float64, precision int32) string {
return decimal.NewFromFloat(money).Truncate(precision).String()
}
// RoundFloat 四舍五入的方式保留小数位数
// * money 金额
// * precision 小数位数
func RoundFloat(money float64, precision int32) string {
return decimal.NewFromFloat(money).Round(precision).String()
}
// MulFloat 小数相乘
// * money 金额
// * multiple 乘数
// * precision 小数位数
func MulFloat(money float64, multiple float64, precision int32) string {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(multiple)
return aDecimal.Mul(bDecimal).Round(precision).String()
}
// AddFloat 小数相加
// * money 金额
// * money2 金额2
// * precision 小数位数
func AddFloat(money float64, money2 float64, precision int32) string {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(money2)
return aDecimal.Add(bDecimal).Round(precision).String()
}
// SubFloat 小数相减
// * money 金额
// * money2 金额2
// * precision 小数位数
func SubFloat(money float64, money2 float64, precision int32) string {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(money2)
return aDecimal.Sub(bDecimal).Round(precision).String()
}
// DivFloat 小数相除
// * money 金额
// * money2 金额2
// * precision 小数位数
func DivFloat(money float64, money2 float64, precision int32) string {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(money2)
return aDecimal.Div(bDecimal).Round(precision).String()
}
// ==== 返回 float64 ====
// Cut 非四舍五入的方式保留小数位数
// * money 金额
// * precision 小数位数
func Cut(money float64, precision int32) float64 {
return decimal.NewFromFloat(money).Truncate(precision).InexactFloat64()
}
// Round 四舍五入的方式保留小数位数
// * money 金额
// * precision 小数位数
func Round(money float64, precision int32) float64 {
return decimal.NewFromFloat(money).Round(precision).InexactFloat64()
}
// Mul 小数相乘
// * money 金额
// * multiple 乘数
// * precision 小数位数
func Mul(money float64, multiple float64, precision int32) float64 {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(multiple)
return aDecimal.Mul(bDecimal).Round(precision).InexactFloat64()
}
// Add 小数相加
// * money 金额
// * money2 金额2
// * precision 小数位数
func Add(money float64, money2 float64, precision int32) float64 {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(money2)
return aDecimal.Add(bDecimal).Round(precision).InexactFloat64()
}
// Sub 小数相减
// * money 金额
// * money2 金额2
// * precision 小数位数
func Sub(money float64, money2 float64, precision int32) float64 {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(money2)
return aDecimal.Sub(bDecimal).Round(precision).InexactFloat64()
}
// Div 小数相除
// * money 金额
// * money2 金额2
// * precision 小数位数
func Div(money float64, money2 float64, precision int32) float64 {
aDecimal := decimal.NewFromFloat(money)
bDecimal := decimal.NewFromFloat(money2)
return aDecimal.Div(bDecimal).Round(precision).InexactFloat64()
}