依赖于将值格式化为Kotlin中的可读形式



我正在安卓工作室的Kotlin中创建一个应用程序。我想在我的应用程序中显示值,这样,如果数字很长,比如说以百万或数十亿为单位,它就会截断它并用后缀显示,比如K(千(M(百万(、

例如:如果值为331330464,则会显示为331.3 M

是否存在允许我进行此格式化的依赖项?

我为Long类开发了一个扩展函数,它提供了它的人类可读价值:

HumanReadableExt.kt

import kotlin.math.log10
import kotlin.math.pow
val Long.formatHumanReadable: String
get() = log10(coerceAtLeast(1).toDouble()).toInt().div(3).let {
val precision = when (it) {
0 -> 0; else -> 1
}
val suffix = arrayOf("", "K", "M", "G", "T", "P", "E", "Z", "Y")
String.format("%.${precision}f ${suffix[it]}", toDouble() / 10.0.pow(it * 3))
}

因此,println(331330464L.formatHumanReadable)打印:

3.313亿

对于低于1000的值,它返回确切的数字:

println(331L.formatHumanReadable)打印:

331