如何创建 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