代码拉取完成,页面将自动刷新
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))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。