-
Notifications
You must be signed in to change notification settings - Fork 3
/
math.go
80 lines (68 loc) · 1.96 KB
/
math.go
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
// Copyright 2018. bolaxy.org authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package utils
import (
"github.com/shopspring/decimal"
"fmt"
)
//比较float64
func CompareFloat64(a, b float64) int {
return decimal.NewFromFloat(a).Cmp(decimal.NewFromFloat(b))
}
//a+b
func AddFloat64(a, b float64) float64 {
value, _ := decimal.NewFromFloat(a).Add(decimal.NewFromFloat(b)).Float64()
return value
}
//a-b
func SubFloat64(a, b float64) float64 {
value, _ := decimal.NewFromFloat(a).Sub(decimal.NewFromFloat(b)).Float64()
return value
}
//a*b
func MulFloat64(a, b float64) float64 {
value, _ := decimal.NewFromFloat(a).Mul(decimal.NewFromFloat(b)).Float64()
return value
}
//a/b
func DivFloat64(a, b float64) float64 {
value, _ := decimal.NewFromFloat(a).Div(decimal.NewFromFloat(b)).Float64()
return value
}
// if a<b
func LessThanFloat64(a, b float64) bool {
return decimal.NewFromFloat(a).LessThan(decimal.NewFromFloat(b))
}
//if a>b
func GreaterThanFloat64(a, b float64) bool {
return decimal.NewFromFloat(a).GreaterThan(decimal.NewFromFloat(b))
}
//if a=b
func EqualFloat64(a, b float64) bool {
return decimal.NewFromFloat(a).Equal(decimal.NewFromFloat(b))
}
// int64 a, b
// |a-b|
func AbsInt64(n int64) int64 {
y := n >> 63
return (n ^ y) - y
}
func Format(str string, size int) string {
if len(str)>size {
str = str[:13]
}
num := fmt.Sprintf("%v", size-len(str))
fill := fmt.Sprintf("%0"+num+"s", "")
return fmt.Sprintf("%v%v", str, fill)
}