使用parseDouble函数时,如何将大于“ 999”的值存储为double?

时间:2018-08-30 13:34:35

标签: java android

使用parseDouble函数时,我不能存储大于“ 999”的值。这是我的代码:

NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);

double amount = Double.parseDouble(formatter.format(Double.parseDouble(balanceAmt.getText().toString())));

它仅存储不超过该值的“ 999”值。它不允许我存储值“ 1000”或更大。

错误消息:

java.lang.NumberFormatException: For input string: "123,456.78"

2 个答案:

答案 0 :(得分:0)

默认方法NumberFormat.format(String)在将其设置为格式化文本时会自动将逗号分隔成几千个。该逗号不能解析为double数据类型,因为它只接受'。'。作为小数点拆分字符及其周围的数字。

这可以通过测试看到:

double amount = Double.parseDouble(formatter.format(Double.parseDouble("1000")).replace(",", ""));

如果数字需要逗号,则在将其解析为双精度时,请使用.replace()方法替换它。否则,请为您的数字格式程序使用自定义实例,例如:

NumberFormat formatter = new DecimalFormat("0000.00");

答案 1 :(得分:0)

我在假设balanceAmt.getText().toString()返回123,456.78或类似的情况下工作。

NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);

double amount = Double.parseDouble(formatter.format(Double.parseDouble(balanceAmy.getText().toString().replace(",", ""))).replace(",", "")); 

System.out.print(amount);

从balanceAmt获取余额时,它带有逗号,因此必须将其删除。如果通过格式化程序,它将重新添加逗号,这意味着您必须在第二个parseDouble完成之前再次将其删除。