我正在开发一个安卓计算器。用户按下按钮 1 到 9 和小数点,然后 inputnum (arraylist) 然后将显示解析为输入,然后 oepration 然后显示答案。相关代码如下:
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
关于安卓计算器减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12316597/