Skip to content

Commit 4809197

Browse files
authored
Merge pull request #171 from jmseb3/main
Fix incorrect formatting of negative numbers
2 parents 6e8d7f1 + eebb9b4 commit 4809197

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

src/commonMain/kotlin/nl/jacobras/humanreadable/HumanReadableNumber.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,23 @@ internal fun Double.formatNumber(
1212
val rounded = formatWithDecimals(decimals)
1313
val parts = rounded.split('.')
1414

15+
val integerPart = parts[0]
16+
// Check is Negative
17+
val isNegative = integerPart.startsWith("-")
18+
19+
// If Negative Then drop first letter
20+
val numberPart = if (isNegative) integerPart.substring(1) else integerPart
21+
1522
// Format the integer part
16-
val formattedIntegerPart = parts[0]
23+
val formattedNumberPart = numberPart
1724
.reversed()
1825
.chunked(3)
1926
.joinToString(groupSeparator)
2027
.reversed()
2128

29+
val formattedIntegerPart = if (isNegative) "-$formattedNumberPart" else formattedNumberPart
30+
31+
2232
// Format the decimal part
2333
val decimalPart = if (parts.size > 1) parts[1] else ""
2434
val formattedDecimalPart = if (decimals > 0) {

src/commonTest/kotlin/nl/jacobras/humanreadable/HumanReadableNumberEdgeCaseTests.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,10 @@ class HumanReadableNumberEdgeCaseTests {
1515
assertThat(HumanReadable.number(0.04, decimals = 2)).isEqualTo("0.04")
1616
assertThat(HumanReadable.number(00000.00004, decimals = 3)).isEqualTo("0.000")
1717
}
18+
19+
@Test
20+
fun negativeNumber() {
21+
assertThat(HumanReadable.number(-123456)).isEqualTo("-123,456")
22+
assertThat(HumanReadable.number(-123)).isEqualTo("-123")
23+
}
1824
}

0 commit comments

Comments
 (0)