mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-17 11:12:28 +08:00
fix: fix bug of Comma, issue #248
This commit is contained in:
@@ -26,16 +26,25 @@ func Comma[T constraints.Float | constraints.Integer | string](value T, symbol s
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isNegative := strings.HasPrefix(numString, "-")
|
||||||
|
if isNegative {
|
||||||
|
numString = numString[1:]
|
||||||
|
}
|
||||||
|
|
||||||
index := strings.Index(numString, ".")
|
index := strings.Index(numString, ".")
|
||||||
if index == -1 {
|
if index == -1 {
|
||||||
index = len(numString)
|
index = len(numString)
|
||||||
}
|
}
|
||||||
|
|
||||||
for index > 3 {
|
for index > 3 {
|
||||||
index = index - 3
|
index -= 3
|
||||||
numString = numString[:index] + "," + numString[index:]
|
numString = numString[:index] + "," + numString[index:]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isNegative {
|
||||||
|
numString = "-" + numString
|
||||||
|
}
|
||||||
|
|
||||||
return symbol + numString
|
return symbol + numString
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ func TestComma(t *testing.T) {
|
|||||||
assert.Equal("12,345.6789", Comma(+12345.6789, ""))
|
assert.Equal("12,345.6789", Comma(+12345.6789, ""))
|
||||||
assert.Equal("12,345,678.9", Comma(12345678.9, ""))
|
assert.Equal("12,345,678.9", Comma(12345678.9, ""))
|
||||||
assert.Equal("123,456,789,000", Comma(123456789000, ""))
|
assert.Equal("123,456,789,000", Comma(123456789000, ""))
|
||||||
|
|
||||||
|
assert.Equal("-999", Comma(-999, ""))
|
||||||
|
assert.Equal("-1,000", Comma(-1000, ""))
|
||||||
|
assert.Equal("-1,234,567", Comma(-1234567, ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPretty(t *testing.T) {
|
func TestPretty(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user