| package humanize |
| |
| import ( |
| "strconv" |
| "strings" |
| ) |
| |
| // Comma produces a string form of the given number in base 10 with |
| // commas after every three orders of magnitude. |
| // e.g. Comma(834142) -> 834,142 |
| func Comma(v int64) string { |
| sign := "" |
| if v < 0 { |
| sign = "-" |
| v = 0 - v |
| } |
| |
| parts := []string{"", "", "", "", "", "", "", "", ""} |
| j := len(parts) - 1 |
| |
| for v > 999 { |
| parts[j] = strconv.FormatInt(v%1000, 10) |
| switch len(parts[j]) { |
| case 2: |
| parts[j] = "0" + parts[j] |
| case 1: |
| parts[j] = "00" + parts[j] |
| } |
| v = v / 1000 |
| j-- |
| } |
| parts[j] = strconv.Itoa(int(v)) |
| return sign + strings.Join(parts[j:len(parts)], ",") |
| } |