Skip to content

Instantly share code, notes, and snippets.

@edp1096
Created April 20, 2021 20:21
Show Gist options
  • Select an option

  • Save edp1096/d9829355751e1ccc329a3294a1fdbbb1 to your computer and use it in GitHub Desktop.

Select an option

Save edp1096/d9829355751e1ccc329a3294a1fdbbb1 to your computer and use it in GitHub Desktop.
SI prefix conversion
package main
import (
"fmt"
"math"
)
type Ranges struct {
Divider float64
Suffix string
}
func formatUnitNumber(n float64, fixNum int64) (result string) {
r := []Ranges{
{Divider: 1000000000, Suffix: "G"},
{Divider: 1000000, Suffix: "M"},
{Divider: 1000, Suffix: "k"},
{Divider: 1, Suffix: ""},
{Divider: 0.001, Suffix: "m"},
{Divider: 0.000001, Suffix: "u"},
{Divider: 0.000000001, Suffix: "n"},
{Divider: 0.000000000001, Suffix: "p"},
}
for i := 0; i < len(r); i++ {
if n >= r[i].Divider {
result = fmt.Sprint(math.Floor((n/r[i].Divider)*100)/100) + r[i].Suffix
return
}
}
result = fmt.Sprint(n)
return
}
func main() {
// 0.0000001 -> 100.00n
fmt.Println(formatUnitNumber(0.0000001, 2))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment