# Humane Units [![Build Status](https://travis-ci.org/dustin/go-humanize.svg?branch=master)](https://travis-ci.org/dustin/go-humanize) [![GoDoc](https://godoc.org/github.com/dustin/go-humanize?status.svg)](https://godoc.org/github.com/dustin/go-humanize)

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
