mirror of https://github.com/ollama/ollama.git
				
				
				
			
		
			
				
	
	
		
			35 lines
		
	
	
		
			782 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			782 B
		
	
	
	
		
			Go
		
	
	
	
package format
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"math"
 | 
						|
	"strconv"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	Thousand = 1000
 | 
						|
	Million  = Thousand * 1000
 | 
						|
	Billion  = Million * 1000
 | 
						|
)
 | 
						|
 | 
						|
func HumanNumber(b uint64) string {
 | 
						|
	switch {
 | 
						|
	case b >= Billion:
 | 
						|
		number := float64(b) / Billion
 | 
						|
		if number == math.Floor(number) {
 | 
						|
			return fmt.Sprintf("%.0fB", number) // no decimals if whole number
 | 
						|
		}
 | 
						|
		return fmt.Sprintf("%.1fB", number) // one decimal if not a whole number
 | 
						|
	case b >= Million:
 | 
						|
		number := float64(b) / Million
 | 
						|
		if number == math.Floor(number) {
 | 
						|
			return fmt.Sprintf("%.0fM", number) // no decimals if whole number
 | 
						|
		}
 | 
						|
		return fmt.Sprintf("%.2fM", number) // two decimals if not a whole number
 | 
						|
	case b >= Thousand:
 | 
						|
		return fmt.Sprintf("%.0fK", float64(b)/Thousand)
 | 
						|
	default:
 | 
						|
		return strconv.FormatUint(b, 10)
 | 
						|
	}
 | 
						|
}
 |