cubefs
49 строк · 986.0 Байт
1package humanize
2
3import (
4"strconv"
5"strings"
6)
7
8func stripTrailingZeros(s string) string {
9if !strings.ContainsRune(s, '.') {
10return s
11}
12offset := len(s) - 1
13for offset > 0 {
14if s[offset] == '.' {
15offset--
16break
17}
18if s[offset] != '0' {
19break
20}
21offset--
22}
23return s[:offset+1]
24}
25
26func stripTrailingDigits(s string, digits int) string {
27if i := strings.Index(s, "."); i >= 0 {
28if digits <= 0 {
29return s[:i]
30}
31i++
32if i+digits >= len(s) {
33return s
34}
35return s[:i+digits]
36}
37return s
38}
39
40// Ftoa converts a float to a string with no trailing zeros.
41func Ftoa(num float64) string {
42return stripTrailingZeros(strconv.FormatFloat(num, 'f', 6, 64))
43}
44
45// FtoaWithDigits converts a float to a string but limits the resulting string
46// to the given number of decimal places, and no trailing zeros.
47func FtoaWithDigits(num float64, digits int) string {
48return stripTrailingZeros(stripTrailingDigits(strconv.FormatFloat(num, 'f', 6, 64), digits))
49}
50