代码之家  ›  专栏  ›  技术社区  ›  Owais Yosuf

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

  •  1
  • Owais Yosuf  · 技术社区  · 7 年前

    NumberFormat formatter = NumberFormat.getNumberInstance();
    formatter.setMinimumFractionDigits(2);
    formatter.setMaximumFractionDigits(2);
    
    double amount = Double.parseDouble(formatter.format(Double.parseDouble(balanceAmt.getText().toString())));
    

    错误消息:

    java.lang.NumberFormatException: For input string: "123,456.78"
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   wareisjared    7 年前

    默认方法NumberFormat.format格式(字符串)将其设置为格式化文本时,自动放置分隔千的逗号。无法将此逗号解析为双精度数据类型,因为它只接受“.”作为小数拆分字符及其周围的数字。

    这可以从这个测试中看出:

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

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

    NumberFormat formatter = new DecimalFormat("0000.00");
    
        2
  •  0
  •   CodeMonkey    7 年前

    我工作的前提是 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中得到余额时,它有逗号,所以你必须删除它。当if通过格式化程序时,它会重新添加逗号,这意味着您必须在第二个逗号之前再次删除它 parseDouble