// +build go1.6 package humanize import ( "bytes" "math/big" "strings" ) // BigCommaf produces a string form of the given big.Float in base 10 // with commas after every three orders of magnitude. func BigCommaf(v *big.Float) string { buf := &bytes.Buffer{} if v.Sign() < 0 { buf.Write([]byte{'-'}) v.Abs(v) } comma := []byte{','} parts := strings.Split(v.Text('f', -1), ".") pos := 0 if len(parts[0])%3 != 0 { pos += len(parts[0]) % 3 buf.WriteString(parts[0][:pos]) buf.Write(comma) } for ; pos < len(parts[0]); pos += 3 { buf.WriteString(parts[0][pos : pos+3]) buf.Write(comma) } buf.Truncate(buf.Len() - 1) if len(parts) > 1 { buf.Write([]byte{'.'}) buf.WriteString(parts[1]) } return buf.String() }