diff --git a/core/ui/src/main/java/com/tangem/core/ui/utils/InputNumberFormatter.kt b/core/ui/src/main/java/com/tangem/core/ui/utils/InputNumberFormatter.kt index 988e827efd..486b1cf9a2 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/utils/InputNumberFormatter.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/utils/InputNumberFormatter.kt @@ -20,13 +20,20 @@ class InputNumberFormatter( val thousandsSeparator = symbols.groupingSeparator val decimalSeparator = symbols.decimalSeparator - if (text.startsWith("0") && text.length > 1 && text[1] != decimalSeparator) { + val lastChar = text.last() + val trimmedText = if (text.isNotEmpty() && (lastChar == thousandsSeparator || lastChar == POINT_SEPARATOR)) { + text.dropLast(1) + decimalSeparator + } else { + text + } + + if (trimmedText.startsWith("0") && trimmedText.length > 1 && trimmedText[1] != decimalSeparator) { return "0" } - val filteredChars = text.replace(thousandsSeparator.toString(), "").filterIndexed { index, c -> - val isOneOrZeroPoint = c == decimalSeparator && index != 0 && text.count { it == decimalSeparator } <= 1 - val isIndexPointIndex = c == decimalSeparator && index != 0 && text.indexOf(decimalSeparator) == index + val filteredChars = trimmedText.replace(thousandsSeparator.toString(), "").filterIndexed { index, c -> + val isOneOrZeroPoint = c == decimalSeparator && index != 0 && trimmedText.count { it == decimalSeparator } <= 1 + val isIndexPointIndex = c == decimalSeparator && index != 0 && trimmedText.indexOf(decimalSeparator) == index c.isDigit() || isIndexPointIndex || isOneOrZeroPoint } // If dot is present, take first digits before decimal and first decimals digits after decimal @@ -64,5 +71,6 @@ class InputNumberFormatter( companion object { private const val TEXT_CHUNK_THOUSAND = 3 + private const val POINT_SEPARATOR = '.' } } \ No newline at end of file