gpt4 book ai didi

java - Double.parseDouble 丢失小数位

转载 作者:行者123 更新时间:2023-12-02 05:25:13 24 4
gpt4 key购买 nike

我遇到了无法解决的问题。尝试了网站上描述的各种解决方案,但没有结果。我传递的字符串“total”会转换为 30.00,但在 Doubleparse 上它会更改为 30.0

我需要 double 为30.00,因为它必须添加到数组列表中,并且还显示为文本,如30.00而不是30.0

我已经尝试过

DecimalFormat df = new DecimalFormat("#.##");
Double number_total = Double.parseDouble(df.format(total));

ERROR: java.lang.IllegalArgumentException: Bad class: class java.lang.String at java.text.NumberFormat.format(NumberFormat.java:304) at java.text.DecimalFormat.format(DecimalFormat.java:702) at java.text.Format.format(Format.java:93) at com.example.jc.salesman.MainActivity.Totais(MainActivity.java:338) at com.example.jc.salesman.MainActivity$2.onClick(MainActivity.java:235)

String strSum = ((String.format("%.2f", Double.toString(sum))));

ERROR: Process: com.example.jc.salesman, PID: 26845 java.util.IllegalFormatConversionException: %f can't format
java.lang.String arguments at java.util.Formatter.badArgumentType(Formatter.java:1489) at java.util.Formatter.transformFromFloat(Formatter.java:2038) at java.util.Formatter.transform(Formatter.java:1465) at java.util.Formatter.doFormat(Formatter.java:1081) at java.util.Formatter.format(Formatter.java:1042) at java.util.Formatter.format(Formatter.java:1011) at java.lang.String.format(String.java:1999) at java.lang.String.format(String.java:1973) at

com.example.jc.salesman.MainActivity.Totais(MainActivity.java:368)

我什至在 main 中强制使用 Locale,

Locale.setDefault(new Locale("en", "US"));

请帮忙:)

public void Total (String total){

Log.d("log2","total: " + total);// it prints 30.00

Double number_total = Double.parseDouble(total);

Log.d("log2","number_total: " + total);// it prints 30.0
losing a decimal place.

array_Total.add (number_total); //Arraylist<Double
sum (double) = sum + number_total;
String strSum = (Double.toString(sum));
total.setText (strSum);
}

最佳答案

您错误地使用了df.format()。来自 javadoc ,DecimalFormat 的 .format() 方法采用 Number(double、long 或 Number 子类的 Object)。

您可以做的是正常解析并存储 double 值(30.0)。当您确实需要输出 double 时,可以使用字符串格式化程序进行输出,例如String.format("%.2f", val)

关于java - Double.parseDouble 丢失小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com