...

Source file src/github.com/dustin/go-humanize/commaf.go

Documentation: github.com/dustin/go-humanize

     1  //go:build go1.6
     2  // +build go1.6
     3  
     4  package humanize
     5  
     6  import (
     7  	"bytes"
     8  	"math/big"
     9  	"strings"
    10  )
    11  
    12  // BigCommaf produces a string form of the given big.Float in base 10
    13  // with commas after every three orders of magnitude.
    14  func BigCommaf(v *big.Float) string {
    15  	buf := &bytes.Buffer{}
    16  	if v.Sign() < 0 {
    17  		buf.Write([]byte{'-'})
    18  		v.Abs(v)
    19  	}
    20  
    21  	comma := []byte{','}
    22  
    23  	parts := strings.Split(v.Text('f', -1), ".")
    24  	pos := 0
    25  	if len(parts[0])%3 != 0 {
    26  		pos += len(parts[0]) % 3
    27  		buf.WriteString(parts[0][:pos])
    28  		buf.Write(comma)
    29  	}
    30  	for ; pos < len(parts[0]); pos += 3 {
    31  		buf.WriteString(parts[0][pos : pos+3])
    32  		buf.Write(comma)
    33  	}
    34  	buf.Truncate(buf.Len() - 1)
    35  
    36  	if len(parts) > 1 {
    37  		buf.Write([]byte{'.'})
    38  		buf.WriteString(parts[1])
    39  	}
    40  	return buf.String()
    41  }
    42  

View as plain text