在kotlin中使用十进制格式格式化数字

Jos*_*bre 21 android decimalformat kotlin

我面临一个问题,我需要用一个数字做一些计算,例如5000,00乘以 ( 1,025^3 )。

所以在这种情况下 5000,00 * (1,025^3) = 5385,45

所以我的问题是,我怎么能格式化数字5385,45要像5.385,45使用十进制格式可能?

我自己尝试过,我做了这段代码,在应用程序中输出 5385,45 但不是5.385,45

    var interestValue = (5000,00*(Math.pow(1.025,yearValue)))
    val number = java.lang.Double.valueOf(interestValue)
    val dec = DecimalFormat("#,00")
    val credits = dec.format(number)
    vValueInterest.text = credits
Run Code Online (Sandbox Code Playgroud)

for*_*pas 30

这是您需要的格式:

val dec = DecimalFormat("#,###.##")
Run Code Online (Sandbox Code Playgroud)

将打印:

5.384,45
Run Code Online (Sandbox Code Playgroud)

如果您总是需要小数点后的 2 位数字:

val dec = DecimalFormat("#,###.00") 
Run Code Online (Sandbox Code Playgroud)

  • 0 将打印为 .00 而不是 0.00。只需使用 `String.format("%.2f", number)` (5认同)
  • 如果需要将`0`打印为`0.00`,可以使用`DecimalFormat("#,##0.00")`。 (4认同)
  • @Choletski `0` 将被打印为 `0`。问题不是关于格式化固定小数位,而是关于将“5385,45”之类的数字格式化为“5.385,45”,这意味着千位分隔符。 (2认同)

Tre*_*kaz 25

我发现进行此类格式化的“最 Kotlin 风格”的方法是:

"%,.2f".format(Locale.GERMAN, 1234.5678)      // => "1.234,57"
"%,.2f".format(Locale.ENGLISH, 1234.5678)     // => "1,234.57"

"%,.2f".format(1234.5678)                     // => "1,234.57" for me, in en_AU
Run Code Online (Sandbox Code Playgroud)

请注意,尽管这是 Kotlin 自己的扩展方法String,但它仍然只适用于 JVM。

对于那些寻求多平台实现的人(就像我一样),mp_stools是一种选择。


小智 17

val num = 1.34567
val df = DecimalFormat("#.##")
df.roundingMode = RoundingMode.CEILING

println(df.format(num))
Run Code Online (Sandbox Code Playgroud)

运行程序时,输出将是:1.34

检查:https : //www.programiz.com/kotlin-programming/examples/round-number-decimal


小智 5

用过的:

%.numberf

fun main(args: Array<String>) {
var A: Double
A = readLine()!!.toDouble()
var bla = A*A
var calculator = 3.14159 * bla
println("A=%.4f".format(calculator))
}
Run Code Online (Sandbox Code Playgroud)