Есть ли Kotlin собственный способ форматирования числа с плавающей запятой в число десятичных знаков? - PullRequest
2 голосов
/ 15 апреля 2020

Большинство ответов используют Java (например, String.format), чтобы выполнить работу, но мне нужен способ сделать это чисто с родным Kotlin.

Скажите метод, подобный забавному Float .toString (numOfDe c: Int) Я бы хотел, чтобы значение округлялось, например:

35.229938f.toString (1) возвращает "35,2" 35.899991f.toString (2) возвращает "35,90"

Ответы [ 3 ]

2 голосов
/ 15 апреля 2020

Вы также можете использовать:

fun Float.toString(numOfDec: Int): String {
    if (numOfDec < 0) {
        return this.toString()
    }
    return String.format(("%.${numOfDec}f").format(this))
}

String.format - это идиоматический c способ Kotlin для форматирования строки.

0 голосов
/ 15 апреля 2020

Используйте это в вашем сценарии

 try {
            if (!TextUtils.isDigitsOnly(st)) {
                val rounded = Math.round(st.toFloat())
                val toHex = BigInteger(rounded.toString(), 10)
                val t = toHex.toString(16)
                t.toString()
            } else {
                val toHex = BigInteger(st, 10)
                val t = toHex.toString(16)
                t.toString()
            }
        } catch (e: NumberFormatException) {
            error
        }
0 голосов
/ 15 апреля 2020

Я создал следующее расширение Float (это также должно работать с Double):

/**
 * Return the float receiver as a string display with numOfDec after the decimal (rounded)
 * (e.g. 35.72 with numOfDec = 1 will be 35.7, 35.78 with numOfDec = 2 will be 35.80)
 *
 * @param numOfDec number of decimal places to show (receiver is rounded to that number)
 * @return the String representation of the receiver up to numOfDec decimal places
 */
fun Float.toString(numOfDec: Int): String {
    val integerDigits = this.toInt()
    val floatDigits = ((this - integerDigits) * 10f.pow(numOfDec)).roundToInt()
    return "${integerDigits}.${floatDigits}"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...