diff --git a/docs/mathutil.md b/docs/mathutil.md index 231a0cc..c01e9ef 100644 --- a/docs/mathutil.md +++ b/docs/mathutil.md @@ -20,9 +20,13 @@ import (
## Index +- [Average](#Average) - [Exponent](#Exponent) - [Fibonacci](#Fibonacci) - [Factorial](#Factorial) +- [Max](#Max) +- [Min](#Min) + - [Percent](#Percent) - [RoundToFloat](#RoundToFloat) - [RoundToString](#RoundToString) @@ -33,6 +37,35 @@ import ( ## Documentation + +### Average +

Return average value of numbers. Maybe call RoundToFloat to round result.

+ +Signature: + +```go +func Average[T lancetconstraints.Number](numbers ...T) T +``` +Example: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + fmt.Println(mathutil.Average(0, 0)) //0 + fmt.Println(mathutil.Average(1, 1)) //1 + avg := mathutil.Average(1.2, 1.4) //1.2999999998 + roundAvg := mmathutil.RoundToFloat(avg, 1) // 1.3 +} +``` + + + ### Exponent

Calculate x to the nth power.

@@ -117,6 +150,60 @@ func main() { +### Max +

Return max value of numbers.

+ +Signature: + +```go +func Max[T lancetconstraints.Number](numbers ...T) T +``` +Example: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + fmt.Println(mathutil.Max(0, 0)) //0 + fmt.Println(mathutil.Max(1, 2, 3)) //3 + fmt.Println(mathutil.Max(1.2, 1.4, 1.1, 1.4)) //1.4 +} +``` + + + +### Min +

Return min value of numbers.

+ +Signature: + +```go +func Min[T lancetconstraints.Number](numbers ...T) T +``` +Example: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + fmt.Println(mathutil.Min(0, 0)) //0 + fmt.Println(mathutil.Min(1, 2, 3)) //1 + fmt.Println(mathutil.Min(1.2, 1.4, 1.1, 1.4)) //1.1 +} +``` + + + ### Percent

calculate the percentage of val to total, retain n decimal places.

diff --git a/docs/mathutil_zh-CN.md b/docs/mathutil_zh-CN.md index 6bccd6b..7f15247 100644 --- a/docs/mathutil_zh-CN.md +++ b/docs/mathutil_zh-CN.md @@ -20,10 +20,13 @@ import (
## 目录 +- [Average](#Average) - [Exponent](#Exponent) - [Fibonacci](#Fibonacci) - [Factorial](#Factorial) - +- [Max](#Max) +- [Min](#Min) + - [Percent](#Percent) - [RoundToFloat](#RoundToFloat) - [RoundToString](#RoundToString) @@ -34,6 +37,33 @@ import ( ## Documentation +### Average +

计算平均数. 可能需要对结果调用RoundToFloat方法四舍五入

+ +函数签名: + +```go +func Average[T lancetconstraints.Number](numbers ...T) T +``` +例子: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + fmt.Println(mathutil.Average(0, 0)) //0 + fmt.Println(mathutil.Average(1, 1)) //1 + avg := mathutil.Average(1.2, 1.4) //1.2999999998 + roundAvg := mmathutil.RoundToFloat(avg, 1) // 1.3 +} +``` + + ### Exponent

指数计算(x的n次方)

@@ -117,6 +147,59 @@ func main() { ``` +### Max +

返回参数中的最大数

+ +函数签名: + +```go +func Max[T lancetconstraints.Number](numbers ...T) T +``` +例子: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + fmt.Println(mathutil.Max(0, 0)) //0 + fmt.Println(mathutil.Max(1, 2, 3)) //3 + fmt.Println(mathutil.Max(1.2, 1.4, 1.1, 1.4)) //1.4 +} +``` + + + +### Min +

返回参数中的最小数

+ +函数签名: + +```go +func Min[T lancetconstraints.Number](numbers ...T) T +``` +例子: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + fmt.Println(mathutil.Min(0, 0)) //0 + fmt.Println(mathutil.Min(1, 2, 3)) //1 + fmt.Println(mathutil.Min(1.2, 1.4, 1.1, 1.4)) //1.1 +} +``` + + ### Percent

计算百分比,保留n位小数

diff --git a/mathutil/mathutil_test.go b/mathutil/mathutil_test.go index 4dfe523..b324ad6 100644 --- a/mathutil/mathutil_test.go +++ b/mathutil/mathutil_test.go @@ -80,3 +80,19 @@ func TestAverage(t *testing.T) { t.Log(avg) assert.Equal(1.3, RoundToFloat(avg, 1)) } + +func TestMax(t *testing.T) { + assert := internal.NewAssert(t, "TestMax") + + assert.Equal(Max(0, 0), 0) + assert.Equal(Max(1, 2, 3), 3) + assert.Equal(Max(1.2, 1.4, 1.1, 1.4), 1.4) +} + +func TestMin(t *testing.T) { + assert := internal.NewAssert(t, "TestMin") + + assert.Equal(Min(0, 0), 0) + assert.Equal(Min(1, 2, 3), 1) + assert.Equal(Min(1.2, 1.4, 1.1, 1.4), 1.1) +}