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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:42:02