41 lines
		
	
	
		
			745 B
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			745 B
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
| // +build go1.6
 | |
| 
 | |
| package humanize
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"math/big"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| // BigCommaf produces a string form of the given big.Float in base 10
 | |
| // with commas after every three orders of magnitude.
 | |
| func BigCommaf(v *big.Float) string {
 | |
| 	buf := &bytes.Buffer{}
 | |
| 	if v.Sign() < 0 {
 | |
| 		buf.Write([]byte{'-'})
 | |
| 		v.Abs(v)
 | |
| 	}
 | |
| 
 | |
| 	comma := []byte{','}
 | |
| 
 | |
| 	parts := strings.Split(v.Text('f', -1), ".")
 | |
| 	pos := 0
 | |
| 	if len(parts[0])%3 != 0 {
 | |
| 		pos += len(parts[0]) % 3
 | |
| 		buf.WriteString(parts[0][:pos])
 | |
| 		buf.Write(comma)
 | |
| 	}
 | |
| 	for ; pos < len(parts[0]); pos += 3 {
 | |
| 		buf.WriteString(parts[0][pos : pos+3])
 | |
| 		buf.Write(comma)
 | |
| 	}
 | |
| 	buf.Truncate(buf.Len() - 1)
 | |
| 
 | |
| 	if len(parts) > 1 {
 | |
| 		buf.Write([]byte{'.'})
 | |
| 		buf.WriteString(parts[1])
 | |
| 	}
 | |
| 	return buf.String()
 | |
| }
 |