在Android中四舍五入至小数点后两位

时间:2015-12-11 21:00:33

标签: android

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。

任何人都知道如何解决此错误?或者解决这个问题?

3 个答案:

答案 0 :(得分:2)

由于变量n1n2n3ints,因此它们的和和后续除法也是整数。因此,结果将被截断为整数。

要获得准确的结果,您应该强制划分为浮点数。要做到这一点,其中一个操作数应该是双精度数。您可以将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;