我遇到了一个我无法解决的问题。尝试了网站上描述的各种解决方案,但没有结果。
我传递的字符串“ 总计”转换为30.00,但在Doubleparse上它更改为powershell /?
我需要将double设为30.0
,因为必须将其添加到数组列表中,并且还必须以文本形式显示为30.00
而不是30.00
我尝试过
30.0
错误:java.lang.IllegalArgumentException:错误的类:class java.lang.String 在java.text.NumberFormat.format(NumberFormat.java:304) 在java.text.DecimalFormat.format(DecimalFormat.java:702) 在java.text.Format.format(Format.java:93) 在com.example.jc.salesman.MainActivity.Totais(MainActivity.java:338) 在com.example.jc.salesman.MainActivity $ 2.onClick(MainActivity.java:235)
DecimalFormat df = new DecimalFormat("#.##");
Double number_total = Double.parseDouble(df.format(total));
错误:进程:com.example.jc.salesman,PID:26845 java.util.IllegalFormatConversionException:%f无法格式化
java.lang.String参数 在java.util.Formatter.badArgumentType(Formatter.java:1489) 在java.util.Formatter.transformFromFloat(Formatter.java:2038) 在java.util.Formatter.transform(Formatter.java:1465) 在java.util.Formatter.doFormat(Formatter.java:1081) 在java.util.Formatter.format(Formatter.java:1042) 在java.util.Formatter.format(Formatter.java:1011) 在java.lang.String.format(String.java:1999) 在java.lang.String.format(String.java:1973)com.example.jc.salesman.MainActivity.Totais(MainActivity.java:368)
我甚至在main中强制使用了Locale,
String strSum = ((String.format("%.2f", Double.toString(sum))));
请帮助:)
Locale.setDefault(new Locale("en", "US"));
答案 0 :(得分:0)
您错误地使用了df.format()
。从javadoc中,DecimalFormat的.format()方法采用一个数字(双精度,长整数或对象,它是Number的子类)。
您可以做的是正常解析并存储double(30.0)。当您确实需要输出double时,可以使用String格式器输出,例如String.format("%.2f", val)
答案 1 :(得分:0)
使用String.format("%.2f", doubleValue)
将其设置为2个小数点。但这也会将您的其他十进制值四舍五入为2个小数点(例如30.2345-> 30.23),因此,如果要保留十进制值,请有条件地进行。