Turn SizeSuffix into a string and a suffix
()
| 35 | |
| 36 | // Turn SizeSuffix into a string and a suffix |
| 37 | func (x SizeSuffix) string() (string, string) { |
| 38 | scaled := float64(0) |
| 39 | suffix := "" |
| 40 | switch { |
| 41 | case x < 0: |
| 42 | return "off", "" |
| 43 | case x == 0: |
| 44 | return "0", "" |
| 45 | case x < Kibi: |
| 46 | scaled = float64(x) |
| 47 | suffix = "" |
| 48 | case x < Mebi: |
| 49 | scaled = float64(x) / float64(Kibi) |
| 50 | suffix = "Ki" |
| 51 | case x < Gibi: |
| 52 | scaled = float64(x) / float64(Mebi) |
| 53 | suffix = "Mi" |
| 54 | case x < Tebi: |
| 55 | scaled = float64(x) / float64(Gibi) |
| 56 | suffix = "Gi" |
| 57 | case x < Pebi: |
| 58 | scaled = float64(x) / float64(Tebi) |
| 59 | suffix = "Ti" |
| 60 | case x < Exbi: |
| 61 | scaled = float64(x) / float64(Pebi) |
| 62 | suffix = "Pi" |
| 63 | default: |
| 64 | scaled = float64(x) / float64(Exbi) |
| 65 | suffix = "Ei" |
| 66 | } |
| 67 | if math.Floor(scaled) == scaled { |
| 68 | return fmt.Sprintf("%.0f", scaled), suffix |
| 69 | } |
| 70 | return fmt.Sprintf("%.3f", scaled), suffix |
| 71 | } |
| 72 | |
| 73 | // String turns SizeSuffix into a string |
| 74 | func (x SizeSuffix) String() string { |