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  }