我现在正在研究一个计算器,除小数位外,一切正常。
计算器实际上包含2个显示器,一个用于实际操作,称为fakedisplay,另一个称为Display,用于显示所需格式,即添加逗号。
按12345.678时,显示屏将显示fakedisplay并显示为12,345.678,但如果我按12345.009,则fakedisplay将正常工作为12345.009,但显示屏仍然保持为12,345直到9被按下,此时它将正常显示12,345.009
然而,奇怪的是,当用户按0时,没有响应,直到按9,009将立即追加。
我知道这是由解析代码引起的,但基于此,我该如何修改以下代码?我真的想不出任何解决方案......非常感谢您的所有建议!
one.setOnClickListener(new View.OnClickListener() {
if (str.length()<15) {
Fakedisplay.append("1");
}
DecimalFormat myFormatter1 = new DecimalFormat("###,###,###,###.#################");
String str1=Fakedisplay.getText().toString();
String stripped1 = Double.valueOf(str1).toString();
stripped1 = myFormatter1.format(Double.valueOf(stripped1));
if (stripped1.endsWith(".0"))
stripped1 = stripped1.substring(0, stripped1.length() - 2);
Display.setText(stripped1);
}
答案 0 :(得分:0)
最简单的解决方案可能是不在每次击键时剥离代码中的.0
..
相反,当用户调用结果时,只删除尾随零(假设当然有小数点)。输入数字键{{1}等键}通过0
,小数点9
或符号更改键.
(我称之为输入键)不会生成结果,因此不应删除尾随零。
但是,非输入键,例如在计算器上按+/-
或+
或-
时,可以自由修改数字。
这将显示用户输入时输入的数字,但仍会在必要时删除尾随零。
你可以通过修改你的陈述来做到这一点(如上所述,只有当用户按下非入口密钥时才这样做):
=
第一个语句删除十进制数字末尾的所有尾随零(除非它是真正的整数)。第二个是照顾这种情况。
毫无疑问,如果我更多地考虑一下,我可以做一次替换,但这应该足以让它发挥作用。