使用toString,android的小数位数

时间:2011-08-06 16:24:31

标签: android double tostring

我正在创建一个简单的程序,它对用户在EditText视图中输入的值执行简单的数学函数。前两个EditText视图包含整数,最后一个可能是十进制,因此答案也可能需要是十进制形式,所以我将和(vis)设置为double,但是如何将小数位数限制为四?一切都运行正常,答案只有很多小数位!

这是我的代码:

public void onClick(View v) {
            String a,b,t;
            double vis;

            EditText txtbox1 = (EditText)findViewById(R.id.A);
                EditText txtbox2 = (EditText)findViewById(R.id.B);
                EditText txtbox3 = (EditText)findViewById(R.id.t);
                TextView tv = (TextView) findViewById(R.id.Answer);

            a = txtbox1.getText().toString();
            b = txtbox2.getText().toString();
            t = txtbox3.getText().toString();

            vis = ((Integer.parseInt(a)*1) + (Integer.parseInt(b)*2)) /       (Double.parseDouble(t));
            tv.setText(double.toString(vis));       
    }
}

非常感谢!

3 个答案:

答案 0 :(得分:12)

您可以使用String.format()确保在输出中只获得4位小数。只需将最后一行替换为tv.setText(String.format("%.4f", vis));

有关如何将String.format()用于此目的的更多详细信息,请参阅http://download.oracle.com/javase/tutorial/java/data/numberformat.html

答案 1 :(得分:2)

我认为回答有点为时已晚,但它可能有助于未来的目的。

如果我们有double个数字且我们需要得到4个十进制值,我们可以将double乘以10000,并将double值转换为integer并再次反转到double并将数字除以10000。

答案 2 :(得分:1)

要获得更多控制权,请使用BigDecimal.round()。您可以使用所需的精度和舍入规则设置MathContext(.5向上舍入,而.5向下舍入等)。

double vis = 21.23456;

tv.setText(new BigDecimal(vis).round(new MathContext(6, RoundingMode.HALF_UP)).toString());