使用小数格式的Kotlin中的格式编号



我面临一个问题,我需要进行一些计算,例如 5000,00 将其乘以( 1,025^3 <)/strong>)。

所以在这种情况下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

这是您需要的格式:

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

将打印:

5.384,45

如果您在小数点之后始终需要完全2位数字:

val dec = DecimalFormat("#,###.00") 
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

"大多数Kotlin-Quequ"我发现这样做这种格式的方式是:

"%,.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是一个选项。

使用:

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

尝试val dec = DecimalFormat("#.###,00")。有关DemalFormat的示例,请检查此链接。

我需要做类似的事情,但对于Kotlin Multiplatform(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)) ?: ""

相关内容

  • 没有找到相关文章

最新更新