当前位置: 首页 > 知识库问答 >
问题:

如何创建Kotlin十进制格式化程序

袁单鹗
2023-03-14

我想创建一个十进制格式化程序,它最多可以显示两个十进制数字,并带有一个给定的分隔符。

例如,使用分隔符,“

input -> output
3.0   -> "3"
3.1   -> "3,1"
3.14  -> "3,14"
3.141 -> "3,14"
3.149 -> "3,15"

我想用静态编程语言来做这件事,我想我必须使用DecimalForati但是不明白如何做。你能帮我吗?

共有2个答案

魏健柏
2023-03-14

您确实可以使用java。文本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
孟永望
2023-03-14

下面的代码针对您的所有示例进行了测试,似乎运行良好:

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

要在DecimalFormats中设置特定的分隔符,可以使用setDecimal分隔符。

注意模式,因为#意味着:

一个数字,前导零被省略

很明显,你可以改变你的着装。

这里有更多信息。

 类似资料:
  • 是否可以使用一种方法或其他方法,而不是“%.6f”。格式(值)以实现相同的目标?这是我的代码: 我想让它更具动态性和可读性

  • 我想让字符串值int显示为 所以我把这个代码放在我的Java课上 但当我运行到模拟器时它被强制关闭了这是logcat

  • 问题内容: 我想将整数数字格式化为十六进制字符串。 打印,但我希望它作为。我怎么做? 问题答案: 试试这个

  • 我正在使用DecimalFormats将双打格式化为字符串。然后这个字符串被集成到我的表示层中。 问题:我想保留所有的小数。示例:“12345678.123456789” 格式:#.#- 我可以用##########对于大小数点,但是如果小数点更长呢? 我发现我的小测试程序很有用,想和大家分享。 你能帮我显示所有小数吗? 这导致: 编辑:一位用户提到了一个相关的问题:如何很好地将浮点数格式化为字符

  • 我正在使用模式"#0.00##"来格式化数字,它可以像预期的那样为大多数输入工作。但有时源号较小(即:6.84378E-05),并被转换为"0,0001"。 是否有可能仅使用科学符号格式化这些数字(不符合标准模式)?保持所有“正常”数字不变?用单一模式。 我必须只使用一个DecimalFormal模式,没有任何额外的代码。 编辑:为了更好地解释为什么我需要单精度格式:我使用的是一个外部库,只能定义

  • 在中设置货币小数格式时遇到问题。我用一个类来设置,这个类扩展了,它将转换为,反之亦然。当我应该更改值时,如果删除所有数据并插入一个新的完整值,它是有效的,但如果我必须添加/更改值的一部分,如13.10中的13.00,更改将不应用,并重新提出旧值13.00。 如何解决? 谢谢