public void onButtonClick(View v) {
int n1, n2, n3;
double calc;
EditText e1 = (EditText)findViewById(R.id.first_grade);
EditText e2 = (EditText)findViewById(R.id.second_grade);
EditText e3 = (EditText)findViewById(R.id.third_grade);
TextView t1 = (TextView)findViewById(R.id.calculate);
n1 = Integer.parseInt(e1.getText().toString());
n2 = Integer.parseInt(e2.getText().toString());
n3 = Integer.parseInt(e3.getText().toString());
calc = (n1 + n2 + n3)/3;
t1.setText(String.format("%.2f", calc));
}
这是我的代码,我也尝试过DecimalFormat,但stackoverflow的解决方案都不适用于我。
如果我分别输入11,22,10作为输入,我应得到14.333333的结果,但结果是14.00。
任何人都知道如何解决此错误?或者解决这个问题?
答案 0 :(得分:2)
由于变量n1
,n2
和n3
是ints
,因此它们的和和后续除法也是整数。因此,结果将被截断为整数。
要获得准确的结果,您应该强制划分为浮点数。要做到这一点,其中一个操作数应该是双精度数。您可以将3
替换为3.0
(n1 + n2 + n3) / 3.0
接下来,我们如何将结果四舍五入到两位小数。我们可以将结果乘以100,执行整数除法,然后除以100并转换为double。
((n1 + n2 + n3) * 100 / 3) / 100.0
您可以在this question中查看其他方法。
答案 1 :(得分:1)
问题在于以下代码行
calc = (n1 + n2 + n3) / 3;
所有值都是整数,因此通过整数除法将(11 + 22 + 10) / 3
计算为整数值14。
如果将除数更改为double,则结果将是浮点运算。
calc = (n1 + n2 + n3) / 3.0;
答案 2 :(得分:0)
尝试将整数结果转换为double
calc =(double) (n1 + n2 + n3)/3;