gpt4 book ai didi

java - Android DecimalFormat 格式不正确

转载 作者:行者123 更新时间:2023-11-29 04:26:24 25 4
gpt4 key购买 nike

我在 TextWatcher 中使用 DecimalFormat,这是我的代码:

override fun afterTextChanged(p0: Editable?) {
amountEt?.removeTextChangedListener(this)

var df = DecimalFormat("#,###.##")
df.maximumFractionDigits = 2
df.minimumFractionDigits = 0
if (hasFractionalPart) {
df.isDecimalSeparatorAlwaysShown = true
}
try {
val inilen: Int
val endlen: Int
inilen = amountEt?.text!!.length

var text: String? = p0.toString().replace(df.decimalFormatSymbols.groupingSeparator.toString(), "")
//text = text?.replace(df.decimalFormatSymbols.decimalSeparator.toString(), "")
var n = df.parse(text)
var t = df.format(n)
val cp = amountEt?.selectionStart
amountEt?.setText(t)
endlen = amountEt?.text!!.length
val sel = cp!!.plus(endlen - inilen)
if (sel > 0 && sel <= amountEt?.text!!.length) {
amountEt?.setSelection(sel)
} else {
// place cursor at the end?
amountEt?.setSelection(amountEt?.text!!.length - 1)
}
} catch (e: Exception) {
Log.d("ERROR", e.stackTrace.toString())
}

amountEt?.addTextChangedListener(this)
}

我的问题是用户想写入 amountEt(这是一个 EditText),例如:1.02

但是当用户将 0 写入我的编辑文本时,df.format(n) 行结果将为 1

我该如何解决这个问题?

更新:我调试了我的代码,如果我将 7.0 写入 edittext,我会得到这个:

text = "7.0"

n = 7(类型为数字)

如果我改变这一行:

var n = df.parse(text)

为此:

var n = df.parse(text).toDouble()

n = 7.0

t = "7."

这是关于我的调试器的图片: enter image description here

最佳答案

尝试使用 DecimalFormat("#,###.00") 而不是 DecimalFormat("#,###.##")

关于java - Android DecimalFormat 格式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46089132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com