Точность DecimalFormat работает неправильно

Я хотел бы отформатировать поплавок с заданной точностью, используя DecimalFormat. что у меня есть это

val formatter = DecimalFormat(if (precision > 0) "#0.${"0".repeat(precision)}" else "#")

Допустим, точность равна 2, и когда я это делаю

formatter.format(20.0f).toFloat()

Я получаю вывод как 20.0f, а не 20.00f


person Sagar    schedule 09.01.2017    source источник


Ответы (1)


Вы конвертируете String обратно в Float, тем самым теряя формат, в котором был String.

Вместо этого просто напечатайте вывод format:

println(formatter.format(20.0f))

Если вам нужна дополнительная буква «f», поместите ее в шаблон:

val pattern = if (precision > 0) {
    "#0.${"0".repeat(precision)}f"
} else {
    "#f"
}
person nhaarman    schedule 09.01.2017