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

u1ehiz5o  于 2023-08-06  发布在  Kotlin
关注(0)|答案(6)|浏览(212)

我遇到了一个问题,我需要用一个数字做一些计算,例如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

字符串

k5ifujac

k5ifujac1#

这是你需要的格式:

val dec = DecimalFormat("#,###.##")

字符串
将打印:

5.384,45


如果你总是需要精确的小数点后2位数:

val dec = DecimalFormat("#,###.00")

ycggw6v2

ycggw6v22#

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

println(df.format(num))

字符串
当你运行程序时,输出将是:1.34
检查:https://www.programiz.com/kotlin-programming/examples/round-number-decimal

li9yvcax

li9yvcax3#

我发现的“最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

字符串
请注意,尽管这是Kotlin自己在String上的扩展方法,但它仍然只能在JVM上工作。
对于那些寻找多平台实现的人(就像我一样),mp_stools是一个选择。

zlwx9yxi

zlwx9yxi4#

使用:

%.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))
}

字符串

sg3maiej

sg3maiej5#

试试val dec = DecimalFormat("#.###,00")。有关DecimalFormat的示例,请检查link

jw5wzhpr

jw5wzhpr6#

我需要做一些类似的事情,但对于Kotlin多平台(KMM)。我努力寻找一个多平台的解决方案,所以我想我会在这里发布我想出的一个:

// Common
expect fun Double.formatDecimal(maxFractionDigits: Int = 2): String
// Android
import java.text.DecimalFormat

actual fun Double.formatDecimal(maxFractionDigits: Int): String =
    DecimalFormat().apply {
        isGroupingUsed = false
        minimumFractionDigits = 0
        maximumFractionDigits = maxFractionDigits
        isDecimalSeparatorAlwaysShown = false
    }.format(this)
// iOS
import kotlinx.cinterop.convert
import platform.Foundation.NSNumber
import platform.Foundation.NSNumberFormatter
import platform.Foundation.NSNumberFormatterDecimalStyle

actual fun Double.formatDecimal(maxFractionDigits: Int): String =
    NSNumberFormatter().apply {
        minimumFractionDigits = 0u
        maximumFractionDigits = maxFractionDigits.convert()
        numberStyle = NSNumberFormatterDecimalStyle
    }.stringFromNumber(number = NSNumber(double = this)) ?: ""

相关问题