fusenapi/utils/format/number.go
laodaming 50c5e28381 fix
2023-09-27 16:51:29 +08:00

40 lines
758 B
Go

package format
import (
"github.com/zeromicro/go-zero/core/logx"
"strconv"
"strings"
)
// 数字变成带千分位的字符串
func NumToStringWithThousandthPercentile(numberStr string) string {
if _, err := strconv.ParseFloat(numberStr, 64); err != nil {
logx.Error("is not a number")
return ""
}
sliceList := strings.Split(numberStr, ".") //切分开小数
s := sliceList[0]
f := ""
if len(sliceList) == 2 {
f = "." + sliceList[1]
}
l := len(s)
if l <= 3 {
return s + f
}
r := l % 3 //前面第几位开始加入千分位
if r == 0 {
r = 3
}
b := strings.Builder{}
for i := 0; i < l; i++ {
b.WriteString(string(s[i]))
if i+1 == r && i != l-1 {
b.WriteString(",")
r += 3
}
}
b.WriteString(f)
return b.String()
}