TextView无法转换为double类型修复后仍无法获取总金额求助
问题解决:EditText金额转换错误
你的核心问题是始终没正确使用EditText的输入文本值,而是直接操作了EditText对象本身,导致无法解析出正确的金额:
错误原因分析
- 初始代码中
Double.toString(editTextPayment)是把EditText对象转成字符串(而非用户输入的文本),还试图赋值给double变量,直接触发类型不匹配错误。 - 修改后的代码里
Double.parseDouble(String.valueOf(editTextPayment))同样是把EditText对象转成字符串(格式类似android.widget.EditText@xxxxxx),根本不是用户输入的数字,自然解析失败。
正确代码实现
你已经获取了用户输入的文本存在payment变量里,直接用它解析即可:
try{ String payment = editTextPayment.getText().toString(); // 先判断输入是否为空,避免无效解析 if (!payment.isEmpty()) { double total = Double.parseDouble(payment) * 100; options.put("amount", total); } } catch (NumberFormatException e){ // 可添加用户提示,比如"请输入有效金额" e.printStackTrace(); }
进阶优化(金额计算建议)
如果涉及金额相关的计算,推荐用BigDecimal替代double,避免浮点数精度丢失问题:
try{ String payment = editTextPayment.getText().toString(); if (!payment.isEmpty()) { BigDecimal total = new BigDecimal(payment).multiply(new BigDecimal("100")); options.put("amount", total.doubleValue()); // 根据options的类型调整,也可直接存储BigDecimal } } catch (NumberFormatException e){ e.printStackTrace(); }
内容的提问来源于stack exchange,提问作者Anaahatas Wellness
相关产品推荐
相关产品推荐

