我创建了一个numberFormat,不返回带有小数的字符串,例如:
val numberFormat = NumberFormat.getCurrencyInstance().apply {
minimumFractionDigits = 0
}
1。如果我调用format,它会返回
numberFormat.format(123) // "$123"
2。如果我用其他值调用解析器
numberFormat.parse("$333") // a number -> 333
3。然后再次用123调用格式,返回的值包含小数! 格式已更改!。
numberFormat.format(123) // "$123.00"
为什么?我们该怎么办,它总是返回format
,不带小数,如 1。。
我制作了一个仓库来复制它:https://github.com/danielgomezrico/test-numericformat-format-parse-error-sample。
看起来它只能在android上失败,而不是在Java中失败。
答案 0 :(得分:1)
从未使用过NumberFormat
,所以我不确定为什么会这样……但是一种解决方法是将numberFormat
变成一个具有自定义getter的类变量,如下所示:
val numberFormat: NumberFormat
get() = NumberFormat.getCurrencyInstance().apply { maximumFractionDigits = 0 }
,然后以这种方式访问它时,它将每次应用maximumFractionDigits