在Android中实现适当的小数位格式化



我需要创建一个十进制格式化程序,它将显示最多1个十进制数字,并带有一个与locale兼容的分隔符。

例如:

0 --> 0.0 or 0,0
0.0 --> 0.0 or 0,0
4 --> 4.0 or 4,0
3.5 --> 3.5 or 3,5

我需要在Kotlin Android实现它。我最初尝试使用DecimalFormat,但当输入为"0 ">

时,此解决方案不起作用。
DecimalFormat("#.0").format(inputNum.toDouble())

哪种方式更适合android ?

在尝试了各种解决方案之后,我找到了使用NumberFormatter代替DecimalFormat作为推荐方法的合适方法。

此API提供了比android.icu.text.DecimalFormat更多的功能,面向ICU的新用户。

private fun formatNumber(number: Double) = NumberFormatter.with()
.decimal(NumberFormatter.DecimalSeparatorDisplay.ALWAYS)
.precision(Precision.fixedFraction(1))
.locale(Resources.getSystem().configuration.locales.get(0))
.format(number)
.toString()