Skip to content

Commit

Permalink
add strconvutil formatfloat for funnel and xox pct
Browse files Browse the repository at this point in the history
  • Loading branch information
grokify committed Dec 10, 2018
1 parent 9a01384 commit 43cc3e4
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions strconv/strconvutil/strconvutil.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package strconvutil

import (
"fmt"
"regexp"
"sort"
"strconv"
Expand Down Expand Up @@ -90,3 +91,39 @@ func SliceStringToIntSort(strings []string) ([]int, error) {
intSlice.Sort()
return intSlice, nil
}

func FormatFloat64ToIntStringFunnel(v float64) string {
return FormatFloat64ToAnyStringFunnel(v, `%0.0f%%`)
}

// FormatFloat64ToAnyStringFunnel is used for funnels.
func FormatFloat64ToAnyStringFunnel(v float64, pattern string) string {
return fmt.Sprintf(pattern, ChangeToFunnelPct(v))
}

func FormatFloat64ToIntString(v float64) string {
return FormatFloat64ToAnyString(v, `%0.0f%%`)
}

// FormatFloat64ToAnyString is used for XoX growth.
func FormatFloat64ToAnyString(v float64, pattern string) string {
return fmt.Sprintf(pattern, ChangeToXoXPct(v))
}

// ChangeToXoXPct converts a 1.0 == 100% based `float64` to a
// XoX percentage `float64`.
func ChangeToXoXPct(v float64) float64 {
if v < 1.0 {
return -1 * 100.0 * (1.0 - v)
}
return 100.0 * (v - 1.0)
}

// ChangeToFunnelPct converts a 1.0 == 100% based `float64` to a
// Funnel percentage `float64`.
func ChangeToFunnelPct(v float64) float64 {
if v < 1.0 {
return 100.0 - (100.0 * (1.0 - v))
}
return 100.0 + (100.0 * (v - 1.0))
}

0 comments on commit 43cc3e4

Please sign in to comment.