我正在创建一个简单的程序,它对用户在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));
}
}
非常感谢!
答案 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());