1

The default of Double in android kotlin is 1121.57. How to convert it to 1.121,5767 to make 4 number after comma? even though behind the comma is 0 like this: 1.121,0000

R Rifa Fauzi Komara
  • 1,915
  • 6
  • 27
  • 54
  • I think what you are looking for is String.format. Nothing kotlin specific needed there, look up java docs. – kolboc May 26 '20 at 10:17
  • can you give me a link to the docs? Because I confused what query of googling for that – R Rifa Fauzi Komara May 26 '20 at 10:18
  • Or you can give me a sample code to convert it. – R Rifa Fauzi Komara May 26 '20 at 10:18
  • https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html the specific thing you might be interested in is '#' - The result should use a conversion-dependent alternate form. DecimalFormat might come in handy too: https://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java?rq=1 – kolboc May 26 '20 at 10:27

3 Answers3

3

You could write an extension function for Double and use a German format for the output, like this:

fun main() {
    val myDouble: Double = 1121.57
    val anotherDouble: Double = 100000.99
    println(myDouble.format(4))
    println(anotherDouble.format(4))
}

fun Double.format(digits:Int) = String.Companion.format(
                                    java.util.Locale.GERMAN,
                                    "%#,.${digits}f",
                                    this
                                )

It returns the following String

1.121,5700
100.000,9900
deHaar
  • 17,687
  • 10
  • 38
  • 51
0

please pass your value to the following function and let me know if it works for you.

fun formattedNumber(number: Double): String{
    val formattedNumber = String.format("%.7f", number)
    val split = formattedNumber.split(".");
    val str = StringBuilder(split[1])
    str.insert(3, ',')
    return "${split[0]}.${str}"
}
mujeeb.omr
  • 499
  • 2
  • 12
0

Take a look at the BigDecimal class. You can easily set the scale to 4 digits and it can be created with a Double.

Wirling
  • 4,810
  • 3
  • 48
  • 78