github.com/jmigpin/editor@v1.6.0/util/mathutil/misc.go (about) 1 package mathutil 2 3 import ( 4 "math" 5 6 "golang.org/x/exp/constraints" 7 ) 8 9 func RoundFloat64(val float64, precision uint) float64 { 10 ratio := math.Pow(10, float64(precision)) 11 return math.Round(val*ratio) / ratio 12 } 13 14 //---------- 15 16 // TODO: remove 17 func LimitFloat64(v float64, min, max float64) float64 { 18 if v < min { 19 return min 20 } else if v > max { 21 return max 22 } 23 return v 24 } 25 26 // TODO: remove 27 func LimitInt(v int, min, max int) int { 28 if v < min { 29 return min 30 } else if v > max { 31 return max 32 } 33 return v 34 } 35 36 func Limit[T constraints.Ordered](v, min, max T) T { 37 if v < min { 38 return min 39 } else if v > max { 40 return max 41 } 42 return v 43 } 44 45 //---------- 46 47 func Min[T constraints.Ordered](s ...T) T { 48 m := s[0] 49 for _, v := range s[1:] { 50 if m > v { 51 m = v 52 } 53 } 54 return m 55 } 56 func Max[T constraints.Ordered](s ...T) T { 57 m := s[0] 58 for _, v := range s[1:] { 59 if m < v { 60 m = v 61 } 62 } 63 return m 64 }