货币NumberFormat在调用`parse`

时间:2019-09-27 19:09:14

标签: android kotlin number-formatting

我创建了一个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中失败。

看看MainActivity.kt

1 个答案:

答案 0 :(得分:1)

从未使用过NumberFormat,所以我不确定为什么会这样……但是一种解决方法是将numberFormat变成一个具有自定义getter的类变量,如下所示:

val numberFormat: NumberFormat
    get() = NumberFormat.getCurrencyInstance().apply { maximumFractionDigits = 0 }

,然后以这种方式访问​​它时,它将每次应用maximumFractionDigits