如何将NumberFormat.getCurrencyInstance(Locale.US)转换为Double



我有一个用户键入的数字。字段中的掩码以货币格式显示数字。遵循掩码

binding.layoutFinance.tiFinanceValue.editText!!.doOnTextChanged { text, _, _, _ ->
if (text.toString() != currentValue) {
var cleanString = ""
var parsed = 0.0
cleanString = text!!.replace("""[$,.]""".toRegex(), "")
parsed = try {
cleanString.trim().replace("uFEFF", "").toDouble()
} catch (e: Exception) {
"0.00".trim().replace("uFEFF", "").toDouble()
}

val formatted = NumberFormat.getCurrencyInstance(Locale.US).format((parsed / 100))
currentValue = formatted
binding.layoutFinance.tiFinanceValue.editText!!.setText(formatted)
binding.layoutFinance.tiFinanceValue.editText!!.setSelection(formatted.length)
}
}

但是现在我需要得到这个值的两倍。。我试图将字符串格式的NumberFormat.getCurrencyInstance(Locale.US(转换为双精度,但我不知道最好的方法是什么。

val newValue = valueToParse.toDouble() 

如何将NumberFormat.getCurrencyInstance(Locale.US(中的字符串转换为双精度?

以结果为例:2555.50到2555.50美元或者类似的东西

使用与格式化相同的格式化程序进行解析。

NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.US);
String text = formatter.format(2555.50);
System.out.println(text);
double d = formatter.parse(text).doubleValue();
System.out.println(d);

输出

$2,555.50
2555.5

最新更新