使用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"

最佳答案

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

通过此测试可以看出:

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


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

NumberFormat formatter = new DecimalFormat("0000.00");

09-29 22:27