diff --git a/docs/mathutil.md b/docs/mathutil.md index 3350494..0eebf5f 100644 --- a/docs/mathutil.md +++ b/docs/mathutil.md @@ -46,6 +46,8 @@ import ( - [Sin](#Sin) - [Log](#Log) - [Sum](#Sum) +- [Abs](#Abs) +
@@ -942,4 +944,40 @@ func main() { // 3 // 1.1 } +``` + +### Abs + +

Returns the absolute value of x.

+ +Signature: + +```go +func Abs[T constraints.Integer | constraints.Float](x T) T +``` + +Example: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + result1 := Abs(-1) + result2 := Abs(-0.1) + result3 := Abs(float32(0.2)) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // 1 + // 0.1 + // 0.2 +} ``` \ No newline at end of file diff --git a/docs/mathutil_zh-CN.md b/docs/mathutil_zh-CN.md index a3764f9..45c64c6 100644 --- a/docs/mathutil_zh-CN.md +++ b/docs/mathutil_zh-CN.md @@ -46,6 +46,7 @@ import ( - [Sin](#Sin) - [Log](#Log) - [Sum](#Sum) +- [Abs](#Abs)
@@ -941,3 +942,39 @@ func main() { // 1.1 } ``` + +### Abs + +

求绝对值。

+ +函数签名: + +```go +func Abs[T constraints.Integer | constraints.Float](x T) T +``` + +示例: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/mathutil" +) + +func main() { + result1 := Abs(-1) + result2 := Abs(-0.1) + result3 := Abs(float32(0.2)) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // 1 + // 0.1 + // 0.2 +} +``` diff --git a/mathutil/mathutil.go b/mathutil/mathutil.go index cd8e999..8a1b070 100644 --- a/mathutil/mathutil.go +++ b/mathutil/mathutil.go @@ -341,3 +341,13 @@ func Sin(radian float64, precision ...int) float64 { func Log(n, base float64) float64 { return math.Log(n) / math.Log(base) } + +// Abs returns the absolute value of x. +// Play: todo +func Abs[T constraints.Integer | constraints.Float](x T) T { + if x < 0 { + return (-x) + } + + return x +} diff --git a/mathutil/mathutil_exmaple_test.go b/mathutil/mathutil_exmaple_test.go index f969754..6b7992c 100644 --- a/mathutil/mathutil_exmaple_test.go +++ b/mathutil/mathutil_exmaple_test.go @@ -389,3 +389,18 @@ func ExampleLog() { // 2.32 // 3 } + +func ExampleAbs() { + result1 := Abs(-1) + result2 := Abs(-0.1) + result3 := Abs(float32(0.2)) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // 1 + // 0.1 + // 0.2 +} diff --git a/mathutil/mathutil_test.go b/mathutil/mathutil_test.go index 73dc773..e7f262d 100644 --- a/mathutil/mathutil_test.go +++ b/mathutil/mathutil_test.go @@ -285,3 +285,16 @@ func TestLog(t *testing.T) { assert.EqualValues(3, TruncRound(Log(27, 3), 0)) assert.EqualValues(2.32, TruncRound(Log(5, 2), 2)) } + +func TestAbs(t *testing.T) { + assert := internal.NewAssert(t, "TestAbs") + + assert.Equal(0, Abs(0)) + assert.Equal(1, Abs(-1)) + + assert.Equal(0.1, Abs(-0.1)) + + assert.Equal(int64(1), Abs(int64(-1))) + assert.Equal(float32(1), Abs(float32(-1))) + +}