formatnumber
This commit is contained in:
parent
0238b0512f
commit
41d47bb162
53
util.go
53
util.go
|
@ -51,43 +51,40 @@ func FormatBytes(bytes int64) string {
|
||||||
return fmt.Sprintf("%.2f%cB", float64(bytes)/float64(div), "KMGTPE"[exp])
|
return fmt.Sprintf("%.2f%cB", float64(bytes)/float64(div), "KMGTPE"[exp])
|
||||||
}
|
}
|
||||||
|
|
||||||
func FormatInteger(num int) string {
|
// FormatNumber 格式化整数为千分位显示,支持正负数
|
||||||
if num == 0 {
|
func FormatNumber(num int64) string {
|
||||||
return "0"
|
// 处理符号
|
||||||
}
|
sign := ""
|
||||||
|
|
||||||
negative := false
|
|
||||||
if num < 0 {
|
if num < 0 {
|
||||||
negative = true
|
sign = "-"
|
||||||
num = -num
|
num = -num
|
||||||
}
|
}
|
||||||
|
|
||||||
str := strconv.Itoa(num)
|
// 转换为字符串处理
|
||||||
var result strings.Builder
|
str := fmt.Sprintf("%d", num)
|
||||||
|
|
||||||
length := len(str)
|
length := len(str)
|
||||||
remainder := length % 3
|
|
||||||
if remainder == 0 {
|
// 小于等于3位直接返回
|
||||||
remainder = 3
|
if length <= 3 {
|
||||||
|
return sign + str
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, char := range str {
|
// 计算第一个逗号位置
|
||||||
if i == 0 {
|
firstComma := length % 3
|
||||||
result.WriteRune(char)
|
if firstComma == 0 {
|
||||||
if remainder == 1 && length > 1 {
|
firstComma = 3
|
||||||
result.WriteString(",")
|
|
||||||
}
|
}
|
||||||
continue
|
|
||||||
|
// 构建格式化字符串
|
||||||
|
var builder strings.Builder
|
||||||
|
builder.WriteString(str[:firstComma])
|
||||||
|
|
||||||
|
for i := firstComma; i < length; i += 3 {
|
||||||
|
builder.WriteString(",")
|
||||||
|
builder.WriteString(str[i : i+3])
|
||||||
}
|
}
|
||||||
if (i-remainder+1)%3 == 0 {
|
|
||||||
result.WriteString(",")
|
return sign + builder.String()
|
||||||
}
|
|
||||||
result.WriteRune(char)
|
|
||||||
}
|
|
||||||
if negative {
|
|
||||||
return "-" + result.String()
|
|
||||||
}
|
|
||||||
return result.String()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func If[T any](condition bool, trueVal, falseVal T) T {
|
func If[T any](condition bool, trueVal, falseVal T) T {
|
||||||
|
|
Loading…
Reference in New Issue