package formatutil

import (
	"fmt"
	"math"
)

// HumanizeBytes returns human-readable representation of size in bytes with 1024 base.
func HumanizeBytes(size float64) string {
	prefix := ""
	for _, p := range []string{"ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi"} {
		if math.Abs(size) < 1024 {
			break
		}
		prefix = p
		size /= 1024
	}
	return fmt.Sprintf("%.4g%s", size, prefix)
}