You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Kotlin大数值可读格式化依赖咨询

格式化大数值为带后缀的简洁展示(Kotlin/Android)

嘿,这个需求在数据展示场景里太常见了!我给你两种靠谱的方案,按需选就行:

方案一:自己实现轻量工具类(无依赖,灵活可控)

如果你不想引入额外依赖,自己写个Kotlin扩展函数或者工具类就够了,逻辑也不复杂。核心是根据数值大小判断量级,然后做除法+格式化:

fun Long.formatWithSuffix(): String {
    return when {
        this >= 1_000_000_000 -> String.format("%.1f B", this / 1_000_000_000.0)
        this >= 1_000_000 -> String.format("%.1f M", this / 1_000_000.0)
        this >= 1_000 -> String.format("%.1f K", this / 1_000.0)
        else -> this.toString()
    }
}

// 适配Double类型的重载
fun Double.formatWithSuffix(): String {
    return when {
        this >= 1_000_000_000 -> String.format("%.1f B", this / 1_000_000_000.0)
        this >= 1_000_000 -> String.format("%.1f M", this / 1_000_000.0)
        this >= 1_000 -> String.format("%.1f K", this / 1_000.0)
        else -> String.format("%.1f", this)
    }
}

用法超简单,直接调用就行:

val num = 331330464L
println(num.formatWithSuffix()) // 输出 331.3 M

要是你需要调整小数位数(比如保留两位),只要把%.1f改成%.2f就行,完全可控。

方案二:使用现成的依赖库(省时间,功能全)

如果想要更完善的功能(比如多语言适配、更多量级、自定义格式),可以试试这些成熟的库:

1. Apache Commons Lang3

这是Java生态里常用的工具库,里面的工具类能帮你简化数值处理,不过需要自己结合后缀逻辑。在Module级的build.gradle里添加依赖:

implementation 'org.apache.commons:commons-lang3:3.14.0'

示例用法:

import org.apache.commons.lang3.math.NumberUtils
import java.text.DecimalFormat

fun formatNumber(num: Long): String {
    val df = DecimalFormat("0.0")
    return when {
        num >= 1_000_000_000 -> "${df.format(num / 1_000_000_000.0)} B"
        num >= 1_000_000 -> "${df.format(num / 1_000_000.0)} M"
        num >= 1_000 -> "${df.format(num / 1_000.0)} K"
        else -> num.toString()
    }
}

2. 专门的数值格式化库:NumberFormatter

有个第三方库专门做这类需求,支持自定义后缀、小数位数、多语言,在开发者圈子里挺受欢迎的。添加依赖:

implementation 'com.github.MFlisar:NumberFormatter:1.9'

用法示例(配置规则即可):

val formatter = NumberFormatter.Builder()
    .setDecimalPlaces(1)
    .addSuffix(1000, "K")
    .addSuffix(1000000, "M")
    .addSuffix(1000000000, "B")
    .build()
println(formatter.format(331330464L)) // 输出 331.3 M

总结

  • 只需要基础功能的话,自己写工具类最轻便,无依赖还能灵活修改;
  • 涉及复杂场景(多语言、大量级自定义)的话,选现成依赖库更省事儿。

内容的提问来源于stack exchange,提问作者M. Abdel-Ghani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:22:55