Kotlin中如何将数字格式化为带千位分隔逗号的形式?
问题排查
- 格式符类型不匹配:
%,d是整数专属格式符,仅支持传入整数类型参数,你传入的distance是Double浮点类型,触发类型不匹配报错。 - 多余的类型转换逻辑:你之前的代码先格式化得到字符串,又调用
.toDouble()转回数值类型,这个操作会彻底清除所有格式化效果(千位分隔符、位数限制都会丢失),最终赋值给TextView的是原始数值的默认字符串形式,自然不符合预期。
修复方案
你不需要把格式化后的字符串转回数值,直接把格式化后的字符串赋值给TextView即可,参考代码如下:
val distance = distanceInKm(3.140853,21.422510,101.693207,39.826168) // 方式1:先转整数再格式化,得到带千位分隔符的整数字符串 val formattedDist = String.format("%,d", distance.toInt()) distancetomakkah.text = formattedDist
如果需要强制使用逗号作为千位分隔符(避免部分地区Locale默认用点做千位分隔符),可以指定Locale:
val formattedDist = String.format(java.util.Locale.US, "%,d", distance.toInt())
如果你不想转Int,也可以用浮点格式符直接保留0位小数:
val formattedDist = String.format("%,.0f", distance)
内容的提问来源于stack exchange,提问作者Enigma
相关产品推荐
相关产品推荐

