我正在使用Android计算器。用户按下1到9和小数点的按钮,然后inputnum(arraylist)将解析显示为输入,然后运行并显示答案。相关代码如下:
ArrayList<Double> inputnum = new ArrayList<Double>();
double inputnum1;
double inputnum2;
...
inputnum.add(Double.parseDouble(Fakedisplay.getText().toString()));
case SUBTRACT:
inputnum1 = inputnum.get(0);
inputnum2 = inputnum.get(1);
inputnum.removeAll(inputnum);
inputnum.add(inputnum1 - inputnum2);
Fakedisplay.setText(String.format("%.19f", inputnum.get(0)));
String strf2=Fakedisplay.getText().toString();
String strippedf2 = Double.valueOf(strf2).toString();
if (strippedf2.endsWith(".0"))
strippedf2 = strippedf2.substring(0, strippedf2.length() - 2);
Fakedisplay.setText(strippedf2);
问题:
对于1000.84-1000.01,它将给出0.830000000000041,这对于演示文稿来说是不需要的,
然而,这个问题仅发生在减法上,加,乘,除的编码完全相同,但效果很好,例如:1000.84+ 1000.01代表2000.85,不多于1000.84 * 1000.01 = 1000850.0084且不多于1000.84 / 1000.01也起作用,正确呈现。
为什么减法如此特别?怎么处理呢?
最佳答案
尝试使用十进制格式来显示最长为N十进制数字的值。
DecimalFormat round = new DecimalFormat ("###.##");
String output = round.format(inputnum.get(0));
Fakedisplay.setText(output);
0.830000000000041的输出= 0.83