mathUtils.go 1016 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. numrator, _ := new(big.Float).SetPrec(uint(1024)).SetString(strconv.Itoa(value))
  29. denominator := big.NewFloat(math.Pow10(decimal))
  30. denominator1 := numrator.Quo(numrator, denominator)
  31. rst, _ := denominator1.Float64()
  32. return rst
  33. }