diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fcb405b..dbadec37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Changelog +### [13.5.1](https://kaos.sh/ek/13.5.1) + +- `[mathutil]` Added method `FromPerc` +- `[mathutil]` Code refactoring + ### [13.5.0](https://kaos.sh/ek/13.5.0) - `[support/resources]` Added package for collecting info about CPU and memory diff --git a/mathutil/example_test.go b/mathutil/example_test.go index 9cb5cd74..e0c8285d 100644 --- a/mathutil/example_test.go +++ b/mathutil/example_test.go @@ -83,6 +83,12 @@ func ExamplePerc() { // 30% } +func ExampleFromPerc() { + fmt.Printf("%g\n", FromPerc(15.0, 2860)) + // Output: + // 429 +} + func ExampleRound() { fmt.Println(Round(3.14159, 2)) // Output: diff --git a/mathutil/mathutil.go b/mathutil/mathutil.go index 6631ee96..ff2795bd 100644 --- a/mathutil/mathutil.go +++ b/mathutil/mathutil.go @@ -122,12 +122,21 @@ func Abs[N NumericNeg](val N) N { } // Perc calculates percentage -func Perc[N Numeric](val1, val2 N) float64 { - if val2 == 0 { +func Perc[N Numeric](current, total N) float64 { + if current == 0 || total == 0 { return 0 } - return float64(val1) / float64(val2) * 100.0 + return (float64(current) / float64(total)) * 100.0 +} + +// FromPerc calculates value from percentage +func FromPerc(perc float64, total float64) float64 { + if perc <= 0 || total == 0 { + return 0 + } + + return (total / 100.0) * perc } // Round returns rounded value diff --git a/mathutil/mathutil_test.go b/mathutil/mathutil_test.go index e8da32a0..818192df 100644 --- a/mathutil/mathutil_test.go +++ b/mathutil/mathutil_test.go @@ -68,3 +68,11 @@ func (s *MathUtilSuite) TestPerc(c *C) { c.Assert(Perc(100, 100), Equals, 100.0) c.Assert(Perc(200, 100), Equals, 200.0) } + +func (s *MathUtilSuite) TestFromPerc(c *C) { + c.Assert(FromPerc(0, 0), Equals, 0.0) + c.Assert(FromPerc(100, 0), Equals, 0.0) + c.Assert(FromPerc(-1, 1000), Equals, 0.0) + c.Assert(FromPerc(250, 100), Equals, 250.0) + c.Assert(FromPerc(25.55, -100), Equals, -25.55) +} diff --git a/version.go b/version.go index 3df16829..9efe2a5a 100644 --- a/version.go +++ b/version.go @@ -8,4 +8,4 @@ package ek // ////////////////////////////////////////////////////////////////////////////////// // // VERSION is current ek package version -const VERSION = "13.5.0" +const VERSION = "13.5.1"