mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-15 18:22:27 +08:00
feat(mathutil): add DIv, FloorToFloat, FloorToString, CeilToFloat, CeilToString (#199)
This commit is contained in:
@@ -34,6 +34,10 @@ import (
|
|||||||
- [RoundToFloat](#RoundToFloat)
|
- [RoundToFloat](#RoundToFloat)
|
||||||
- [RoundToString](#RoundToString)
|
- [RoundToString](#RoundToString)
|
||||||
- [TruncRound](#TruncRound)
|
- [TruncRound](#TruncRound)
|
||||||
|
- [CeilToFloat](#CeilToFloat)
|
||||||
|
- [CeilToString](#CeilToString)
|
||||||
|
- [FloorToFloat](#FloorToFloat)
|
||||||
|
- [FloorToString](#FloorToString)
|
||||||
- [Range](#Range)
|
- [Range](#Range)
|
||||||
- [RangeWithStep](#RangeWithStep)
|
- [RangeWithStep](#RangeWithStep)
|
||||||
- [AngleToRadian](#AngleToRadian)
|
- [AngleToRadian](#AngleToRadian)
|
||||||
@@ -47,6 +51,7 @@ import (
|
|||||||
- [Log](#Log)
|
- [Log](#Log)
|
||||||
- [Sum](#Sum)
|
- [Sum](#Sum)
|
||||||
- [Abs](#Abs)
|
- [Abs](#Abs)
|
||||||
|
- [Div](#Div)
|
||||||
|
|
||||||
<div STYLE="page-break-after: always;"></div>
|
<div STYLE="page-break-after: always;"></div>
|
||||||
|
|
||||||
@@ -493,6 +498,150 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### <span id="CeilToFloat">CeilToFloat</span>
|
||||||
|
|
||||||
|
<p>向上舍入(进一法),保留 n 位小数</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToFloat[T constraints.Float | constraints.Integer](x T, n int) float64
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.CeilToFloat(3.14159, 1)
|
||||||
|
result2 := mathutil.CeilToFloat(3.14159, 2)
|
||||||
|
result3 := mathutil.CeilToFloat(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.2
|
||||||
|
// 3.15
|
||||||
|
// 5
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="CeilToString">CeilToString</span>
|
||||||
|
|
||||||
|
<p>向上舍入(进一法),保留 n 位小数,返回字符串</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToString[T constraints.Float | constraints.Integer](x T, n int) string
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.CeilToString(3.14159, 1)
|
||||||
|
result2 := mathutil.CeilToString(3.14159, 2)
|
||||||
|
result3 := mathutil.CeilToString(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.2
|
||||||
|
// 3.15
|
||||||
|
// 5.0000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="FloorToFloat">FloorToFloat</span>
|
||||||
|
|
||||||
|
<p>向下舍入(去尾法),保留 n 位小数</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToString[T constraints.Float | constraints.Integer](x T, n int) string
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.FloorToFloat(3.14159, 1)
|
||||||
|
result2 := mathutil.FloorToFloat(3.14159, 2)
|
||||||
|
result3 := mathutil.FloorToFloat(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.1
|
||||||
|
// 3.14
|
||||||
|
// 5
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="FloorToString">FloorToString</span>
|
||||||
|
|
||||||
|
<p>向下舍入(去尾法),保留 n 位小数,返回字符串</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToString[T constraints.Float | constraints.Integer](x T, n int) string
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.FloorToString(3.14159, 1)
|
||||||
|
result2 := mathutil.FloorToString(3.14159, 2)
|
||||||
|
result3 := mathutil.FloorToString(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.1
|
||||||
|
// 3.14
|
||||||
|
// 5.0000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### <span id="Range">Range</span>
|
### <span id="Range">Range</span>
|
||||||
|
|
||||||
<p>根据指定的起始值和数量,创建一个数字切片。</p>
|
<p>根据指定的起始值和数量,创建一个数字切片。</p>
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ import (
|
|||||||
- [RoundToFloat](#RoundToFloat)
|
- [RoundToFloat](#RoundToFloat)
|
||||||
- [RoundToString](#RoundToString)
|
- [RoundToString](#RoundToString)
|
||||||
- [TruncRound](#TruncRound)
|
- [TruncRound](#TruncRound)
|
||||||
|
- [CeilToFloat](#CeilToFloat)
|
||||||
|
- [CeilToString](#CeilToString)
|
||||||
|
- [FloorToFloat](#FloorToFloat)
|
||||||
|
- [FloorToString](#FloorToString)
|
||||||
- [Range](#Range)
|
- [Range](#Range)
|
||||||
- [RangeWithStep](#RangeWithStep)
|
- [RangeWithStep](#RangeWithStep)
|
||||||
- [AngleToRadian](#AngleToRadian)
|
- [AngleToRadian](#AngleToRadian)
|
||||||
@@ -47,6 +51,7 @@ import (
|
|||||||
- [Log](#Log)
|
- [Log](#Log)
|
||||||
- [Sum](#Sum)
|
- [Sum](#Sum)
|
||||||
- [Abs](#Abs)
|
- [Abs](#Abs)
|
||||||
|
- [Div](#Div)
|
||||||
|
|
||||||
<div STYLE="page-break-after: always;"></div>
|
<div STYLE="page-break-after: always;"></div>
|
||||||
|
|
||||||
@@ -493,6 +498,150 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### <span id="CeilToFloat">CeilToFloat</span>
|
||||||
|
|
||||||
|
<p>Round float up n decimal places.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToFloat[T constraints.Float | constraints.Integer](x T, n int) float64
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.CeilToFloat(3.14159, 1)
|
||||||
|
result2 := mathutil.CeilToFloat(3.14159, 2)
|
||||||
|
result3 := mathutil.CeilToFloat(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.2
|
||||||
|
// 3.15
|
||||||
|
// 5
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="CeilToString">CeilToString</span>
|
||||||
|
|
||||||
|
<p>Round float up n decimal places.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToString[T constraints.Float | constraints.Integer](x T, n int) string
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.CeilToString(3.14159, 1)
|
||||||
|
result2 := mathutil.CeilToString(3.14159, 2)
|
||||||
|
result3 := mathutil.CeilToString(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.2
|
||||||
|
// 3.15
|
||||||
|
// 5.0000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="FloorToFloat">FloorToFloat</span>
|
||||||
|
|
||||||
|
<p>Round float down n decimal places.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToString[T constraints.Float | constraints.Integer](x T, n int) string
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.FloorToFloat(3.14159, 1)
|
||||||
|
result2 := mathutil.FloorToFloat(3.14159, 2)
|
||||||
|
result3 := mathutil.FloorToFloat(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.1
|
||||||
|
// 3.14
|
||||||
|
// 5
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="FloorToString">FloorToString</span>
|
||||||
|
|
||||||
|
<p>Round float down n decimal places.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func CeilToString[T constraints.Float | constraints.Integer](x T, n int) string
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.FloorToString(3.14159, 1)
|
||||||
|
result2 := mathutil.FloorToString(3.14159, 2)
|
||||||
|
result3 := mathutil.FloorToString(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.1
|
||||||
|
// 3.14
|
||||||
|
// 5.0000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### <span id="Range">Range</span>
|
### <span id="Range">Range</span>
|
||||||
|
|
||||||
<p>Creates a slice of numbers from start with specified count, element step is 1.</p>
|
<p>Creates a slice of numbers from start with specified count, element step is 1.</p>
|
||||||
@@ -964,9 +1113,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
result1 := Abs(-1)
|
result1 := mathutil.Abs(-1)
|
||||||
result2 := Abs(-0.1)
|
result2 := mathutil.Abs(-0.1)
|
||||||
result3 := Abs(float32(0.2))
|
result3 := mathutil.Abs(float32(0.2))
|
||||||
|
|
||||||
fmt.Println(result1)
|
fmt.Println(result1)
|
||||||
fmt.Println(result2)
|
fmt.Println(result2)
|
||||||
@@ -978,3 +1127,38 @@ func main() {
|
|||||||
// 0.2
|
// 0.2
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### <span id="Div">Div</span>
|
||||||
|
|
||||||
|
<p>returns the result of x divided by y.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func Div[T constraints.Float | constraints.Integer](x T, y T) float64
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/duke-git/lancet/v2/mathutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
result1 := mathutil.Div(9, 4)
|
||||||
|
result2 := mathutil.Div(1, 2)
|
||||||
|
result3 := mathutil.Div(0, 666)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
// Output:
|
||||||
|
// 2.25
|
||||||
|
// 0.5
|
||||||
|
// 0
|
||||||
|
}
|
||||||
|
```
|
||||||
@@ -66,7 +66,7 @@ func Percent(val, total float64, n int) float64 {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// RoundToString round up to n decimal places.
|
// RoundToString round off to n decimal places.
|
||||||
// Play: https://go.dev/play/p/kZwpBRAcllO
|
// Play: https://go.dev/play/p/kZwpBRAcllO
|
||||||
func RoundToString[T constraints.Float | constraints.Integer](x T, n int) string {
|
func RoundToString[T constraints.Float | constraints.Integer](x T, n int) string {
|
||||||
tmp := math.Pow(10.0, float64(n))
|
tmp := math.Pow(10.0, float64(n))
|
||||||
@@ -76,7 +76,7 @@ func RoundToString[T constraints.Float | constraints.Integer](x T, n int) string
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// RoundToFloat round up to n decimal places.
|
// RoundToFloat round off to n decimal places.
|
||||||
// Play: https://go.dev/play/p/ghyb528JRJL
|
// Play: https://go.dev/play/p/ghyb528JRJL
|
||||||
func RoundToFloat[T constraints.Float | constraints.Integer](x T, n int) float64 {
|
func RoundToFloat[T constraints.Float | constraints.Integer](x T, n int) float64 {
|
||||||
tmp := math.Pow(10.0, float64(n))
|
tmp := math.Pow(10.0, float64(n))
|
||||||
@@ -100,6 +100,40 @@ func TruncRound[T constraints.Float | constraints.Integer](x T, n int) T {
|
|||||||
return T(result)
|
return T(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FloorToFloat round down to n decimal places.
|
||||||
|
func FloorToFloat[T constraints.Float | constraints.Integer](x T, n int) float64 {
|
||||||
|
tmp := math.Pow(10.0, float64(n))
|
||||||
|
x *= T(tmp)
|
||||||
|
r := math.Floor(float64(x))
|
||||||
|
return r / tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
// FloorToString round down to n decimal places.
|
||||||
|
func FloorToString[T constraints.Float | constraints.Integer](x T, n int) string {
|
||||||
|
tmp := math.Pow(10.0, float64(n))
|
||||||
|
x *= T(tmp)
|
||||||
|
r := math.Floor(float64(x))
|
||||||
|
result := strconv.FormatFloat(r/tmp, 'f', n, 64)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
// CeilToFloat round up to n decimal places.
|
||||||
|
func CeilToFloat[T constraints.Float | constraints.Integer](x T, n int) float64 {
|
||||||
|
tmp := math.Pow(10.0, float64(n))
|
||||||
|
x *= T(tmp)
|
||||||
|
r := math.Ceil(float64(x))
|
||||||
|
return r / tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
// CeilToString round up to n decimal places.
|
||||||
|
func CeilToString[T constraints.Float | constraints.Integer](x T, n int) string {
|
||||||
|
tmp := math.Pow(10.0, float64(n))
|
||||||
|
x *= T(tmp)
|
||||||
|
r := math.Ceil(float64(x))
|
||||||
|
result := strconv.FormatFloat(r/tmp, 'f', n, 64)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
// Max return max value of numbers.
|
// Max return max value of numbers.
|
||||||
// Play: https://go.dev/play/p/cN8DHI0rTkH
|
// Play: https://go.dev/play/p/cN8DHI0rTkH
|
||||||
func Max[T constraints.Integer | constraints.Float](numbers ...T) T {
|
func Max[T constraints.Integer | constraints.Float](numbers ...T) T {
|
||||||
@@ -253,7 +287,7 @@ func PointDistance(x1, y1, x2, y2 float64) float64 {
|
|||||||
return math.Sqrt(c)
|
return math.Sqrt(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsPrimes checks if number is prime number.
|
// IsPrime checks if number is prime number.
|
||||||
// Play: https://go.dev/play/p/Rdd8UTHZJ7u
|
// Play: https://go.dev/play/p/Rdd8UTHZJ7u
|
||||||
func IsPrime(n int) bool {
|
func IsPrime(n int) bool {
|
||||||
if n < 2 {
|
if n < 2 {
|
||||||
@@ -351,3 +385,8 @@ func Abs[T constraints.Integer | constraints.Float](x T) T {
|
|||||||
|
|
||||||
return x
|
return x
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Div returns the result of x divided by y.
|
||||||
|
func Div[T constraints.Float | constraints.Integer](x T, y T) float64 {
|
||||||
|
return float64(x) / float64(y)
|
||||||
|
}
|
||||||
|
|||||||
@@ -110,6 +110,66 @@ func ExampleTruncRound() {
|
|||||||
// 0.125
|
// 0.125
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExampleCeilToFloat() {
|
||||||
|
result1 := CeilToFloat(3.14159, 1)
|
||||||
|
result2 := CeilToFloat(3.14159, 2)
|
||||||
|
result3 := CeilToFloat(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.2
|
||||||
|
// 3.15
|
||||||
|
// 5
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleCeilToString() {
|
||||||
|
result1 := CeilToString(3.14159, 1)
|
||||||
|
result2 := CeilToString(3.14159, 2)
|
||||||
|
result3 := CeilToString(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.2
|
||||||
|
// 3.15
|
||||||
|
// 5.0000
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleFloorToFloat() {
|
||||||
|
result1 := FloorToFloat(3.14159, 1)
|
||||||
|
result2 := FloorToFloat(3.14159, 2)
|
||||||
|
result3 := FloorToFloat(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.1
|
||||||
|
// 3.14
|
||||||
|
// 5
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleFloorToString() {
|
||||||
|
result1 := FloorToString(3.14159, 1)
|
||||||
|
result2 := FloorToString(3.14159, 2)
|
||||||
|
result3 := FloorToString(5, 4)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 3.1
|
||||||
|
// 3.14
|
||||||
|
// 5.0000
|
||||||
|
}
|
||||||
|
|
||||||
func ExampleAverage() {
|
func ExampleAverage() {
|
||||||
result1 := Average(1, 2)
|
result1 := Average(1, 2)
|
||||||
result2 := RoundToFloat(Average(1.2, 1.4), 1)
|
result2 := RoundToFloat(Average(1.2, 1.4), 1)
|
||||||
@@ -404,3 +464,17 @@ func ExampleAbs() {
|
|||||||
// 0.1
|
// 0.1
|
||||||
// 0.2
|
// 0.2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExampleDiv() {
|
||||||
|
result1 := Div(9, 4)
|
||||||
|
result2 := Div(1, 2)
|
||||||
|
result3 := Div(0, 666)
|
||||||
|
|
||||||
|
fmt.Println(result1)
|
||||||
|
fmt.Println(result2)
|
||||||
|
fmt.Println(result3)
|
||||||
|
// Output:
|
||||||
|
// 2.25
|
||||||
|
// 0.5
|
||||||
|
// 0
|
||||||
|
}
|
||||||
|
|||||||
@@ -72,8 +72,8 @@ func TestRoundToString(t *testing.T) {
|
|||||||
assert.Equal("0.12", RoundToString(0.124, 2))
|
assert.Equal("0.12", RoundToString(0.124, 2))
|
||||||
assert.Equal("0.13", RoundToString(0.125, 2))
|
assert.Equal("0.13", RoundToString(0.125, 2))
|
||||||
assert.Equal("0.125", RoundToString(0.125, 3))
|
assert.Equal("0.125", RoundToString(0.125, 3))
|
||||||
//assert.Equal("54.321", RoundToString(54.321, 3))
|
assert.Equal("54.321", RoundToString(54.321, 3))
|
||||||
//assert.Equal("17.000", RoundToString(17, 3))
|
assert.Equal("17.000", RoundToString(17, 3))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTruncRound(t *testing.T) {
|
func TestTruncRound(t *testing.T) {
|
||||||
@@ -93,6 +93,51 @@ func TestTruncRound(t *testing.T) {
|
|||||||
assert.Equal(33.33, TruncRound(33.33333, 2))
|
assert.Equal(33.33, TruncRound(33.33333, 2))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFloorToFloat(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
assert := internal.NewAssert(t, "TestFloorToFloat")
|
||||||
|
|
||||||
|
assert.Equal(3.14, FloorToFloat(3.14159, 2))
|
||||||
|
assert.Equal(3.141, FloorToFloat(3.14159, 3))
|
||||||
|
assert.Equal(5.0, FloorToFloat(5, 4))
|
||||||
|
assert.Equal(2.0, FloorToFloat(9/4, 2))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFloorToString(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
assert := internal.NewAssert(t, "TestFloorToString")
|
||||||
|
|
||||||
|
assert.Equal("3.14", FloorToString(3.14159, 2))
|
||||||
|
assert.Equal("3.141", FloorToString(3.14159, 3))
|
||||||
|
assert.Equal("5.0000", FloorToString(5, 4))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCeilToFloat(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
assert := internal.NewAssert(t, "TestCeilToFloat")
|
||||||
|
|
||||||
|
assert.Equal(3.15, CeilToFloat(3.14159, 2))
|
||||||
|
assert.Equal(3.142, CeilToFloat(3.14159, 3))
|
||||||
|
assert.Equal(5.0, CeilToFloat(5, 4))
|
||||||
|
assert.Equal(2.25, CeilToFloat(float32(9)/float32(4), 2))
|
||||||
|
assert.Equal(0.15, CeilToFloat(float64(1)/float64(7), 2))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCeilToString(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
assert := internal.NewAssert(t, "TestCeilToFloat")
|
||||||
|
|
||||||
|
assert.Equal("3.15", CeilToString(3.14159, 2))
|
||||||
|
assert.Equal("3.142", CeilToString(3.14159, 3))
|
||||||
|
assert.Equal("5.0000", CeilToString(5, 4))
|
||||||
|
assert.Equal("2.25", CeilToString(float32(9)/float32(4), 2))
|
||||||
|
assert.Equal("0.15", CeilToString(float64(1)/float64(7), 2))
|
||||||
|
}
|
||||||
|
|
||||||
func TestAverage(t *testing.T) {
|
func TestAverage(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
@@ -352,4 +397,19 @@ func TestAbs(t *testing.T) {
|
|||||||
|
|
||||||
assert.Equal(int64(1), Abs(int64(-1)))
|
assert.Equal(int64(1), Abs(int64(-1)))
|
||||||
assert.Equal(float32(1), Abs(float32(-1)))
|
assert.Equal(float32(1), Abs(float32(-1)))
|
||||||
|
assert.Equal(math.Inf(1), Abs(math.Inf(-1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDiv(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
assert := internal.NewAssert(t, "TestDiv")
|
||||||
|
|
||||||
|
assert.Equal(float64(2), Div(4, 2))
|
||||||
|
assert.Equal(2.5, Div(5, 2))
|
||||||
|
assert.Equal(0.5, Div(1, 2))
|
||||||
|
assert.Equal(0.5, Div(1, 2))
|
||||||
|
assert.Equal(math.Inf(1), Div(8, 0))
|
||||||
|
assert.Equal(math.Inf(-1), Div(-8, 0))
|
||||||
|
assert.Equal(true, math.IsNaN(Div(0, 0)))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user