mathUtils.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package utils
  2. import (
  3. "math"
  4. "math/big"
  5. "sort"
  6. "strconv"
  7. )
  8. // FormatFloat 保留指定小数位并返回字符串
  9. func FormatFloat(num float64, decimal int) string {
  10. // 默认乘1
  11. d := float64(1)
  12. if decimal > 0 {
  13. // 10的N次方
  14. d = math.Pow10(decimal)
  15. }
  16. // math.trunc作用就是返回浮点数的整数部分
  17. // 再除回去,小数点后无效的0也就不存在了
  18. return strconv.FormatFloat(math.Trunc(num*d)/d, 'f', -1, 64)
  19. }
  20. // SortInIntSlice 判断int是否包含于数组中
  21. func SortInIntSlice(haystack []int, needle int) bool {
  22. sort.Ints(haystack)
  23. index := sort.SearchInts(haystack, needle)
  24. return index < len(haystack) && haystack[index] == needle
  25. }
  26. // IntToFloat64 IntToFloat64 高精度转
  27. func IntToFloat64(value int, decimal int) float64 {
  28. if value == 0 {
  29. return 0
  30. }
  31. numrator, _ := new(big.Float).SetPrec(uint(1024)).SetString(strconv.Itoa(value))
  32. denominator := big.NewFloat(math.Pow10(decimal))
  33. denominator1 := numrator.Quo(numrator, denominator)
  34. rst, _ := denominator1.Float64()
  35. return rst
  36. }