【问题标题】:Invalid double in converting String to Double将 String 转换为 Double 时 double 无效
【发布时间】:2013-05-02 07:29:36
【问题描述】:

我在这行代码中得到一个 NumberFormatException : invalid double "111,000,000" :

double SalePotential = Double.valueOf(EtPotential.getText().toString());

一开始我使用 Numberformat 来格式化我的双精度值以分隔数字并将其插入到 EditText 但是当我尝试检索 EditText 的值时,它会抛出异常:

NumberFormat f = NumberFormat.getInstance();
EtPotential.setText(String.valueOf(f.format(PTData.SalePotential)));

我也试过 DecimalFormat 或 Double.parseDouble 没有成功。任何帮助,将不胜感激! :

DecimalFormat f = new DecimalFormat("###.###", DecimalFormatSymbols.getInstance());
double SalePotential = Double.parseDouble(EtPotential.getText().toString());

【问题讨论】:

  • 这个输出是什么:String.valueOf(f.format(PTData.SalePotential))?
  • 实际输入是“111,000,000”吗?
  • EtPotential.getText().toString() edittext 中的输入是什么?
  • @Yoann 和 shinTakezou:不,我在 EditText 中设置了值 11,000,000 然后我想将我的 EditText 编辑为 111,000,000
  • 应该是 111000000 remove ,然后试试

标签: android double number-formatting separator


【解决方案1】:

解析前去掉“,”

double SalePotential = Double.parseDouble(EtPotential.getText().toString().replace(",", ""));

更新:正确实施

double salePotential = 0; // Variable name should start with small letter 
try {
    salePotential = Double.parseDouble(EtPotential.getText().toString().replace(",", ""));
} catch (NumberFormatException e) {
    // EditText EtPotential does not contain a valid double
}

编码愉快 :)

【讨论】:

    【解决方案2】:

    使用replace函数替换所有出现的,

         String  s= EtPotential.getText().toString();
         s = s.replace(",", ""); 
         try
         {
           double SalePotential = Double.parseDouble(s);
         }catch(NumberFormatException e)
         {
             e.printStackTrace();
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 2022-08-15
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多