# Humane Units Just a few functions for helping humanize times and sizes. `go get` it as `github.com/dustin/go-humanize`, import it as `"github.com/dustin/go-humanize"`, use it as `humanize` See [godoc](https://godoc.org/github.com/dustin/go-humanize) for complete documentation. ## Sizes This lets you take numbers like `82854982` and convert them to useful strings like, `83MB` or `79MiB` (whichever you prefer). Example: ```go fmt.Printf("That file is %s.", humanize.Bytes(82854982)) ``` ## Times This lets you take a `time.Time` and spit it out in relative terms. For example, `12 seconds ago` or `3 days from now`. Example: ```go fmt.Printf("This was touched %s", humanize.Time(someTimeInstance)) ``` Thanks to Kyle Lemons for the time implementation from an IRC conversation one day. It's pretty neat. ## Ordinals From a [mailing list discussion][odisc] where a user wanted to be able to label ordinals. 0 -> 0th 1 -> 1st 2 -> 2nd 3 -> 3rd 4 -> 4th [...] Example: ```go fmt.Printf("You're my %s best friend.", humanize.Ordinal(193)) ``` ## Commas Want to shove commas into numbers? Be my guest. 0 -> 0 100 -> 100 1000 -> 1,000 1000000000 -> 1,000,000,000 -100000 -> -100,000 Example: ```go fmt.Printf("You owe $%s.\n", humanize.Comma(6582491)) ``` ## Ftoa Nicer float64 formatter that removes trailing zeros. ```go fmt.Printf("%f", 2.24) // 2.240000 fmt.Printf("%s", humanize.Ftoa(2.24)) // 2.24 fmt.Printf("%f", 2.0) // 2.000000 fmt.Printf("%s", humanize.Ftoa(2.0)) // 2 ``` ## SI notation Format numbers with [SI notation][sinotation]. Example: ```go humanize.SI(0.00000000223, "M") // 2.23nM ``` [odisc]: https://groups.google.com/d/topic/golang-nuts/l8NhI74jl-4/discussion [sinotation]: http://en.wikipedia.org/wiki/Metric_prefix