我想创建一个十进制格式化程序,它最多可以显示2位十进制数字,并带有给定的分隔符。
例如,使用分离器","
input -> output
3.0 -> "3"
3.1 -> "3,1"
3.14 -> "3,14"
3.141 -> "3,14"
3.149 -> "3,15"
我想在科特林做这件事,我想我必须使用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。
注意模式,因为#的意思是:
一个数字,前导零被省略
您显然可以根据自己的喜好更改区域设置。
点击此处了解更多信息。
您确实可以使用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