As a workaround simple solution for multiplatform you can use:
import kotlin.math.abs
import kotlin.math.pow
fun Number.simpleFormat(numberDigitsAfterSeparator: Int = 0, decimalSeparator: Char = ','): String {
if(numberDigitsAfterSeparator < 0)
throw IllegalArgumentException("numberDigitsAfterSeparator should be >= 0 but is $numberDigitsAfterSeparator")
val prefix = this.toInt()
if(numberDigitsAfterSeparator == 0)return "$prefix"
val sign = if(this.toDouble() >= 0.0) "" else "-"
val afterSeparatorPart = abs(this.toDouble() - prefix)
val suffixInt = (10.0.pow(numberDigitsAfterSeparator) * afterSeparatorPart).toInt()
val suffix = if(afterSeparatorPart >= 1.0) "$suffixInt" else addNullsBefore(suffixInt, numberDigitsAfterSeparator)
return "$sign${abs(prefix)}$decimalSeparator$suffix"
}
fun addNullsBefore(suffixInt: Int, numberDigitsAfterSeparator: Int): String {
var s = "$suffixInt"
val len = s.length
repeat(numberDigitsAfterSeparator - len) { _ -> s = "0$s" }
return s
}
Test:
fun main() {
println((-0.00001).simpleFormat(5))
println(3.1415927.simpleFormat(2))
println(3.99.simpleFormat(2))
println((-3.99).simpleFormat(2))
println(3.1415927.simpleFormat())
println(3.99.simpleFormat())
println((-3.99).simpleFormat())
println((-3.99).simpleFormat(-1))
}
wiht output:
-0,00001
3,14
3,99
-3,99
3
3
-3
Exception in thread "main" java.lang.IllegalArgumentException: numberDigitsAfterSeparator should be >= 0 but is -1..