【问题标题】:Auto adjusting decimal Format places as the input format in kotlin?自动调整小数格式位置作为kotlin中的输入格式?
【发布时间】:2021-11-07 12:17:28
【问题描述】:

我正在寻找一种解决方案,使用小数格式将位置作为变量取决于 edittext 格式。

例子:

如果输入是点 (100.21) 之后的 2 位数字

文本 vew 将使用相同的格式 DecimalFormat("#,###.##")

如果输入是 4 位数字 (100.2135)

文本视图将使用相同的格式 (DecimalFormat("#,###.####"))

等等。

所以格式会根据输入格式改变。

【问题讨论】:

  • 这是用于解析还是格式化?你的输入是什么类型的?
  • 格式化。所有输入都是数字。我想要的是格式必须根据输入格式进行更改。 ex1: 输入 = ###.## |结果 = ###.## ex2: 输入 = ###.### |结果 = ###.###

标签: kotlin formatting format decimal


【解决方案1】:

# 模式字符显示为零表示不存在,因此"#,###.####" 模式适用于两种情况:

import java.text.DecimalFormat

fun main() {
    val format = DecimalFormat("#,###.####")
    println(format.format(100.2135)) //100.2135
    println(format.format(100.21))   //100.21
}

在 Kotlin 操场上:https://pl.kotl.in/j0PveSblv

【讨论】:

  • 感谢您的评论。但是当我使用计算两个输入数字时,结果将始终为 6 或 10 位,因此如果我使用您提到的格式“#,###.####”,它将始终在点后显示 4 位所以如果我在点(100.123)之后输入 3 位,结果将是相同的格式 3 位并且不会超过,或者在点之后输入 5 位,比如(100.12345),结果将是相同的格式 5 位并且不会超过有没有任何班级或文本观察者可以从edittext中获取dicamle位置之后的数字并更改格式?
  • 您不需要更改格式。只需设置有意义的最大分数位数(通过模式或通过setMaximumFractionDigits 方法)。最终,您可以设置为无限(在 JVM 术语中)DecimalFormat("#,###.####").apply { maximumFractionDigits = Int.MAX_VALUE }
  • 谢谢,我想要的是结果格式将与输入完全相同。如果输入在点后有 2 位数字,则结果将使用此格式 #,###.##。如果输入有 5 位数字,则结果使用此格式 #,###.##### 不少于或更多位
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2011-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多