英文:
Implement Appropriate Single Decimal Place Formatter in Android
问题
我需要创建一个小数格式化程序,可以显示最多1位小数,并且带有与Locale兼容的分隔符。
例如:
0 --> 0.0或0,0
0.0 --> 0.0或0,0
4 --> 4.0或4,0
3.5 --> 3.5或3,5
我需要在Kotlin中为Android实现它。我最初尝试使用DecimalFormat
,但当输入为"0.0"时,这个解决方案不起作用。
有没有更适合Android的方法?
英文:
I need to create a decimal formatter that would display up to 1 decimal digit, with a Locale-compatible seperator.
For example:
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
I need to implement it in Kotlin for Android. I tried initially using DecimalFormat
but this solution doesn't work when input is "0.0"
DecimalFormat("#.0").format(inputNum.toDouble())
What's more appropriate Android-ish way?
答案1
得分: 1
在尝试了各种解决方案后,我找到了使用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()
英文:
After trying various solutions, I figured out the appropriate approach using NumberFormatter instead of DecimalFormat
as a recommended approach.
This API offers more features than android.icu.text.DecimalFormat and is geared toward new users of 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()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论