74 lines
1.3 KiB
Go
74 lines
1.3 KiB
Go
package tool
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
)
|
|
|
|
func Min[T ~int | ~uint | ~int8 | ~uint8 | ~int16 | ~uint16 | ~int32 | ~uint32 | ~int64 | ~uint64 | ~float32 | ~float64](a, b T) T {
|
|
if a <= b {
|
|
return a
|
|
}
|
|
|
|
return b
|
|
}
|
|
|
|
func Mins[T ~int | ~uint | ~int8 | ~uint8 | ~int16 | ~uint16 | ~int32 | ~uint32 | ~int64 | ~uint64 | ~float32 | ~float64](vals ...T) T {
|
|
var val T
|
|
|
|
if len(vals) == 0 {
|
|
return val
|
|
}
|
|
|
|
val = vals[0]
|
|
|
|
for _, item := range vals[1:] {
|
|
if item < val {
|
|
val = item
|
|
}
|
|
}
|
|
|
|
return val
|
|
}
|
|
|
|
func Max[T ~int | ~uint | ~int8 | ~uint8 | ~int16 | ~uint16 | ~int32 | ~uint32 | ~int64 | ~uint64 | ~float32 | ~float64](a, b T) T {
|
|
if a >= b {
|
|
return a
|
|
}
|
|
|
|
return b
|
|
}
|
|
|
|
func Maxs[T ~int | ~uint | ~int8 | ~uint8 | ~int16 | ~uint16 | ~int32 | ~uint32 | ~int64 | ~uint64 | ~float32 | ~float64](vals ...T) T {
|
|
var val T
|
|
|
|
if len(vals) == 0 {
|
|
return val
|
|
}
|
|
|
|
for _, item := range vals {
|
|
if item > val {
|
|
val = item
|
|
}
|
|
}
|
|
|
|
return val
|
|
}
|
|
|
|
func Sum[T ~int | ~uint | ~int8 | ~uint8 | ~int16 | ~uint16 | ~int32 | ~uint32 | ~int64 | ~uint64 | ~float32 | ~float64](vals ...T) T {
|
|
var sum T = 0
|
|
for i := range vals {
|
|
sum += vals[i]
|
|
}
|
|
return sum
|
|
}
|
|
|
|
func Percent(val, minVal, maxVal, minPercent, maxPercent float64) string {
|
|
return fmt.Sprintf(
|
|
"%d%%",
|
|
int(math.Round(
|
|
((val-minVal)/(maxVal-minVal)*(maxPercent-minPercent)+minPercent)*100,
|
|
)),
|
|
)
|
|
}
|