github.com/shivakar/gdupes@v0.0.0-20180726052558-d5c070c306d0/gdupes/utils.go (about)

     1  package gdupes
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  // HumanizeSize returns human readable representation of size in bytes
     9  func HumanizeSize(n float64) string {
    10  	out := ""
    11  	switch {
    12  	case n > 1e15:
    13  		out = fmt.Sprintf("%.2f PB", n/1e15)
    14  	case n > 1e12:
    15  		out = fmt.Sprintf("%.2f TB", n/1e12)
    16  	case n >= 1e9:
    17  		out = fmt.Sprintf("%.2f GB", n/1e9)
    18  	case n >= 1e6:
    19  		out = fmt.Sprintf("%.2f MB", n/1e6)
    20  	case n >= 1e3:
    21  		out = fmt.Sprintf("%.2f KB", n/1e3)
    22  	default:
    23  		out = fmt.Sprintf("%.2f B", n)
    24  	}
    25  	out = strings.Replace(out, ".00", "", -1) // Cleaning up integer values
    26  
    27  	return out
    28  }