package utils import ( "math" "math/big" "sort" "strconv" ) // FormatFloat 保留指定小数位并返回字符串 func FormatFloat(num float64, decimal int) string { // 默认乘1 d := float64(1) if decimal > 0 { // 10的N次方 d = math.Pow10(decimal) } // math.trunc作用就是返回浮点数的整数部分 // 再除回去,小数点后无效的0也就不存在了 return strconv.FormatFloat(math.Trunc(num*d)/d, 'f', -1, 64) } // SortInIntSlice 判断int是否包含于数组中 func SortInIntSlice(haystack []int, needle int) bool { sort.Ints(haystack) index := sort.SearchInts(haystack, needle) return index < len(haystack) && haystack[index] == needle } // IntToFloat64 IntToFloat64 高精度转 func IntToFloat64(value int, decimal int) float64 { if value == 0 { return 0 } numrator, _ := new(big.Float).SetPrec(uint(1024)).SetString(strconv.Itoa(value)) denominator := big.NewFloat(math.Pow10(decimal)) denominator1 := numrator.Quo(numrator, denominator) rst, _ := denominator1.Float64() return rst }