-
Notifications
You must be signed in to change notification settings - Fork 0
/
math.go
52 lines (41 loc) · 862 Bytes
/
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
package convert
import (
"fmt"
"math"
"strings"
)
func IsOdd(num int) bool {
return num&1 == 1
}
// value是否为base的整数倍
func IsIntegerMultiple(value int32, base int32) bool {
if value < base {
return false
}
return value%base == 0
}
// 保留小数位
// val表示浮点数
// n表示要保留的小数位
func KeepDecimal(val float64, n int) float64 {
n10 := math.Pow10(n)
f := math.Trunc((val+0.5/n10)*n10) / n10
return f
}
// 保留小数位, 并转换为string
// val表示浮点数
// n表示要保留的小数位
func KeepDecimalToString(val float64, n int, zeroFill bool) string {
f := KeepDecimal(val, n)
s := fmt.Sprintf("%v", f)
arr := strings.Split(s, ".")
if len(arr) > 1 && zeroFill {
l := len(arr[1])
if l < n {
l = n
}
format := fmt.Sprintf("%%.%df", l)
s = fmt.Sprintf(format, f)
}
return s
}