如何格式化数字以包含千位分隔符?

one*_*tor 0 number-formatting kotlin

作为输入,我得到一个数字,例如1000000,需要将其转换为String如下所示:1.000.000

另外,数字可以是750000或任何其他,必须转换为750.000以此类推(数字可以小于 1 万,也可以大于 1000 万)

我怎样才能做到这一点?

U-w*_*ays 6

一个简单的方法是使用java.text.DecimalFormat

\n
fun formatter(n: Int) =\n    DecimalFormat("#,###")\n        .format(n)\n        .replace(",", ".")\n\nprintln(formatter(1000000)) // => 1.000.000\nprintln(formatter(750000))  // => 750.000\n
Run Code Online (Sandbox Code Playgroud)\n

但是,请注意,点 ( .) 符号通常用作小数分隔符(或货币小数分隔符)

\n

所以我建议使用,而不是..

\n

在线尝试一下!

\n
\n

更新

\n

如果您的目的是采用德语区域设置(感谢 @AndrewL)格式,则使用正确的区域设置配置DecimalFormatSymbols :

\n
fun formatter(n: Int) =\n    DecimalFormat("#,###", DecimalFormatSymbols(Locale.GERMANY)).format(n)\n
Run Code Online (Sandbox Code Playgroud)\n

在线尝试一下!

\n