Kotlin如何格式化十进制数使不足两位小数时末尾自动补零
解决方案
你当前使用的模式串中小数位用的是##,属于可选占位符,对应位没有数字时就不会显示,要实现小数位不足2位时自动补零,把小数位的占位符换成00即可。
修改后基础代码
val formatter = DecimalFormat("#,###,##0.00") // 可选配置:强制千位分隔符为空格,避免不同区域配置默认分隔符不一致的问题 val formatSymbols = DecimalFormatSymbols() formatSymbols.groupingSeparator = ' ' formatter.decimalFormatSymbols = formatSymbols return formatter.format(value)
规则说明
- 模式串中
0为必填占位符:对应位置没有数字时自动补0 - 模式串中
#为可选占位符:对应位置没有数字时不显示内容
如果你需要整数不显示小数部分(匹配你给出的3434输出为3 434的预期),可以额外增加判断逻辑,代码如下:
val formatterWithDecimal = DecimalFormat("#,###,##0.00") val formatterWithoutDecimal = DecimalFormat("#,###,##0") val formatSymbols = DecimalFormatSymbols() formatSymbols.groupingSeparator = ' ' formatterWithDecimal.decimalFormatSymbols = formatSymbols formatterWithoutDecimal.decimalFormatSymbols = formatSymbols return if (value % 1 == 0.0) { formatterWithoutDecimal.format(value) } else { formatterWithDecimal.format(value) }
输出验证
使用加判断的代码可以完全匹配你给出的所有预期效果:
- 3434 ->
3 434 - 3434.3 ->
3 434.30 - 3434.34 ->
3 434.34
内容的提问来源于stack exchange,提问作者testivanivan
相关产品推荐
相关产品推荐

