如何创建 Kotlin 十进制格式化程序
How to create a Kotlin Decimal Formatter
我想创建一个十进制格式器,最多显示 2 个小数位,并带有给定的分隔符。
例如使用分隔符 ","
input -> output
3.0 -> "3"
3.1 -> "3,1"
3.14 -> "3,14"
3.141 -> "3,14"
3.149 -> "3,15"
我想在 Kotlin 中执行此操作,我想我必须使用 DecimalFormat
但不知道如何操作。你能帮帮我吗?
下面的代码已经针对您的所有示例进行了测试,似乎运行良好:
val locale = Locale("en", "UK")
val symbols = DecimalFormatSymbols(locale)
symbols.decimalSeparator = ','
val pattern = "#.##"
val decimalFormat = DecimalFormat(pattern, symbols)
val format = decimalFormat.format(3.14)
println(format) //3,14
要在您的 DecimalFormat 中设置特定的分隔符,您可以使用 setDecimalSeparator。
注意模式,# 表示:
A digit, leading zeroes are omitted
您显然可以根据自己的需要更改语言环境。
更多信息here。
您确实可以使用 java.text.NumberFormat
来实现您的目标。以下应该与您的示例 Swift 代码非常接近。
// you can change the separators by providing a Locale
val nf = java.text.NumberFormat
.getInstance(java.util.Locale.GERMAN)
nf.minimumFractionDigits = 0
nf.maximumFractionDigits = 2
// you may want to change the rounding mode
nf.roundingMode = java.math.RoundingMode.DOWN
println(nf.format(0)) // 0
println(nf.format(1)) // 1
println(nf.format(1.2)) // 1,2
println(nf.format(1.23)) // 1,23
println(nf.format(1.234)) // 1,23
println(nf.format(12.345)) // 12,34
我想创建一个十进制格式器,最多显示 2 个小数位,并带有给定的分隔符。
例如使用分隔符 ","
input -> output
3.0 -> "3"
3.1 -> "3,1"
3.14 -> "3,14"
3.141 -> "3,14"
3.149 -> "3,15"
我想在 Kotlin 中执行此操作,我想我必须使用 DecimalFormat
但不知道如何操作。你能帮帮我吗?
下面的代码已经针对您的所有示例进行了测试,似乎运行良好:
val locale = Locale("en", "UK")
val symbols = DecimalFormatSymbols(locale)
symbols.decimalSeparator = ','
val pattern = "#.##"
val decimalFormat = DecimalFormat(pattern, symbols)
val format = decimalFormat.format(3.14)
println(format) //3,14
要在您的 DecimalFormat 中设置特定的分隔符,您可以使用 setDecimalSeparator。
注意模式,# 表示:
A digit, leading zeroes are omitted
您显然可以根据自己的需要更改语言环境。
更多信息here。
您确实可以使用 java.text.NumberFormat
来实现您的目标。以下应该与您的示例 Swift 代码非常接近。
// you can change the separators by providing a Locale
val nf = java.text.NumberFormat
.getInstance(java.util.Locale.GERMAN)
nf.minimumFractionDigits = 0
nf.maximumFractionDigits = 2
// you may want to change the rounding mode
nf.roundingMode = java.math.RoundingMode.DOWN
println(nf.format(0)) // 0
println(nf.format(1)) // 1
println(nf.format(1.2)) // 1,2
println(nf.format(1.23)) // 1,23
println(nf.format(1.234)) // 1,23
println(nf.format(12.345)) // 12,34