Ai
2 Star 0 Fork 0

carlmax_my/console-core-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
maths.go 1.73 KB
一键复制 编辑 原始数据 按行查看 历史
carlmax_my 提交于 2025-04-14 21:49 +08:00 . add utils
package maths
import (
"math"
"gitee.com/carlmax_my/console-core-go/pkg/types"
)
// MaxWithIndex 查找所有元素中的最大值
func MaxWithIndex[T types.Hashable](items ...T) (T, int) {
selIndex := -1
for i, t := range items {
if selIndex < 0 {
selIndex = i
} else {
if t > items[selIndex] {
selIndex = i
}
}
}
return items[selIndex], selIndex
}
// MinWithIndex 查找所有元素中的最小值
func MinWithIndex[T types.Hashable](items ...T) (T, int) {
selIndex := -1
for i, t := range items {
if selIndex < 0 {
selIndex = i
} else {
if t < items[selIndex] {
selIndex = i
}
}
}
return items[selIndex], selIndex
}
// Clamp 返回限制在minVal和maxVal范围内的value
func Clamp[T types.Hashable](value T, minVal T, maxVal T) T {
if minVal > maxVal {
minVal, maxVal = maxVal, minVal
}
if value < minVal {
value = minVal
} else if value > maxVal {
value = maxVal
}
return value
}
// Abs 计算绝对值
func Abs[T types.SignedNumber](val T) T {
return T(math.Abs(float64(val)))
}
// Floor 向下取整
func Floor[T types.SignedNumber | types.UnsignedNumber](val T) T {
return T(math.Floor(float64(val)))
}
// Ceil 向上取整
func Ceil[T types.SignedNumber | types.UnsignedNumber](val T) T {
return T(math.Ceil(float64(val)))
}
// Round 四舍五入取整
func Round[T types.SignedNumber | types.UnsignedNumber](val T) T {
return T(math.Round(float64(val)))
}
// Sum 计算所有元素总和
func Sum[T types.SignedNumber | types.UnsignedNumber](items ...T) T {
var sum T
for _, item := range items {
sum += item
}
return sum
}
// Average 计算所有元素的平均值
func Average[T types.SignedNumber | types.UnsignedNumber](items ...T) T {
return Sum(items...) / T(len(items))
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/carlmax_my/console-core-go.git
git@gitee.com:carlmax_my/console-core-go.git
carlmax_my
console-core-go
console-core-go
v0.1.109

搜索帮助