我正在研究一个安卓计算器。用户按下 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 也可以正常工作并正确显示。
为什么减法如此特别?如何处理?