安卓计算器减法

标签 android double calculator

我正在开发一个安卓计算器。用户按下按钮 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/

相关文章:

android - 使用 Facebook SDK 编译应用程序时出错

android - 解析 : Push Notifications "deviceToken" undefined

c# - IFormatProvider 从double到string的科学转换——位数

java - 如何将 String ArrayList 转换为 Double ArrayList 并计算值的总和?

java计算器没有堆栈或数组列表

Python Tkinter 按钮没有出现?

Swift 启用点 - 使一个点再次可点击

java - 在 Onclick 方法中捕获数据库 ID

java - 在NearablesDemoActivity.java中添加什么方法

检查 double 的条件是一个整数不起作用