我需要创建一个十进制格式化程序,它将显示最多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()