cubefs
41 строка · 762.0 Байт
1//go:build go1.6
2// +build go1.6
3
4package humanize
5
6import (
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.
14func BigCommaf(v *big.Float) string {
15buf := &bytes.Buffer{}
16if v.Sign() < 0 {
17buf.Write([]byte{'-'})
18v.Abs(v)
19}
20
21comma := []byte{','}
22
23parts := strings.Split(v.Text('f', -1), ".")
24pos := 0
25if len(parts[0])%3 != 0 {
26pos += len(parts[0]) % 3
27buf.WriteString(parts[0][:pos])
28buf.Write(comma)
29}
30for ; pos < len(parts[0]); pos += 3 {
31buf.WriteString(parts[0][pos : pos+3])
32buf.Write(comma)
33}
34buf.Truncate(buf.Len() - 1)
35
36if len(parts) > 1 {
37buf.Write([]byte{'.'})
38buf.WriteString(parts[1])
39}
40return buf.String()
41}
42